]> git.sur5r.net Git - ngadmin/blobdiff - lib/src/qos.c
Lib: add size checks to prevent several crashes
[ngadmin] / lib / src / qos.c
index e31648afcdd9592b593b9a246fd5e9af7afe3c34..f79da5e7a58683131f91a3b90ee0de5bba21e3ae 100644 (file)
@@ -31,10 +31,16 @@ int ngadmin_getQOSMode (struct ngadmin *nga, int *s)
        
        *s = 0;
        
-       if (attr->first != NULL) {
-               at = attr->first->data;
-               *s = *(char*)at->data;
+       if (attr->first == NULL) {
+               ret = ERR_BADREPLY;
+               goto end;
+       }
+       at = attr->first->data;
+       if (at->size != 1) {
+               ret = ERR_BADREPLY;
+               goto end;
        }
+       *s = *(char*)at->data;
        
        
 end:
@@ -89,6 +95,10 @@ int ngadmin_getQOSValues (struct ngadmin *nga, char *ports)
        for (ln = attr->first; ln != NULL; ln = ln->next) {
                at = ln->data;
                aq = at->data;
+               if (at->size == 0) {
+                       ret = ERR_BADREPLY;
+                       goto end;
+               }
                if (aq->port <= sa->ports)
                        ports[aq->port - 1] = aq->prio;
        }