cmdline: check size of result buffer to avoid overflow
[libcmdline.git] / src / extension_example / parse_obj_list.c
index 21fc019..aa743cf 100644 (file)
@@ -47,13 +47,17 @@ struct cmdline_token_ops token_obj_list_ops = {
 };
 
 int
-parse_obj_list(cmdline_parse_token_hdr_t *tk, const char *buf, void *res)
+parse_obj_list(cmdline_parse_token_hdr_t *tk, const char *buf, void *res,
+              unsigned ressize)
 {
        struct token_obj_list *tk2 = (struct token_obj_list *)tk;
        struct token_obj_list_data *tkd = &tk2->obj_list_data;
        struct object *o;
        unsigned int token_len = 0;
 
+       if (res && ressize < sizeof(struct object *))
+               return -1;
+
        token_len = strlen(buf);
 
        SLIST_FOREACH(o, tkd->list, next) {