Hi,

The following diff corrects an evaluation order error and a memory leak
in error code path.

Comments or OK ?
-- 
Sebastien Marie

Index: sys/kern/kern_pledge.c
===================================================================
--- sys/kern/kern_pledge.c.orig 2016-03-15 08:54:33.500610285 +0100
+++ sys/kern/kern_pledge.c      2016-03-15 09:19:18.679200485 +0100
@@ -503,8 +503,10 @@ sys_pledge(struct proc *p, void *v, regi
                                /* resolved is allocated only if !error */
                                break;
 
-                       if (maxargs += resolvedlen > ARG_MAX) {
+                       maxargs += resolvedlen;
+                       if (maxargs > ARG_MAX) {
                                error = E2BIG;
+                               free(resolved, M_TEMP, resolvedlen);
                                break;
                        }
                        wl->wl_paths[i].name = resolved;

Reply via email to