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;