Fix overflow in strv_null_terminate, and don't make it increase .cnt
This commit is contained in:
+2
-2
@@ -29,7 +29,8 @@ int uc_strv_expand(struct UCStrv *strv)
|
|||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
if (strv->cnt >= strv->allocated) {
|
if (strv->cnt >= strv->allocated) {
|
||||||
rc = uc_strv_grow(strv, 1);
|
//make some extra room
|
||||||
|
rc = uc_strv_grow(strv, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
@@ -81,7 +82,6 @@ int uc_strv_null_terminate(struct UCStrv *strv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
strv->strings[strv->cnt] = NULL;
|
strv->strings[strv->cnt] = NULL;
|
||||||
strv->cnt++;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ START_TEST (test_strv_null_terminate)
|
|||||||
|
|
||||||
rc = uc_strv_null_terminate(&strv);
|
rc = uc_strv_null_terminate(&strv);
|
||||||
fail_if(rc != 0);
|
fail_if(rc != 0);
|
||||||
|
fail_if(strv.cnt != 1); //shouldn't increase .cnt
|
||||||
fail_if(strv.strings[strv.cnt] != NULL);
|
fail_if(strv.strings[strv.cnt] != NULL);
|
||||||
|
|
||||||
uc_strv_destroy(&strv);
|
uc_strv_destroy(&strv);
|
||||||
|
|||||||
Reference in New Issue
Block a user