don't ever set pointer outside of buffer
[project/ucert.git] / ucert.c
diff --git a/ucert.c b/ucert.c
index 686589f..6cdc220 100644 (file)
--- a/ucert.c
+++ b/ucert.c
@@ -172,9 +172,8 @@ static int cert_load(const char *certfile, struct list_head *chain) {
 
                list_add_tail(&cobj->list, chain);
                ret += pret;
-               bufpt = blob_next(bufpt);
        /* repeat parsing while there is still enough remaining data in buffer */
-       } while(len > pos + sizeof(struct blob_attr));
+       } while(len > pos + sizeof(struct blob_attr) && (bufpt = blob_next(bufpt)));
 
        return (ret <= 0);
 }