]> granicus.if.org Git - sudo/commitdiff
Avoid calling realloc3() with a zero size parameter when all retrieved
authorTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 21 Feb 2013 12:01:53 +0000 (07:01 -0500)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 21 Feb 2013 12:01:53 +0000 (07:01 -0500)
sssd rules fail.  Otherwise we'll get a run-time error due to
malloc(0) checking.

plugins/sudoers/sssd.c

index 7803b3a639dbe824a3b1b81627fc7ff081cec615..cd9eb58f80122c194b1de0505daf9a48f79921fc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003-2012 Todd C. Miller <Todd.Miller@courtesan.com>
+ * Copyright (c) 2003-2013 Todd C. Miller <Todd.Miller@courtesan.com>
  * Copyright (c) 2011 Daniel Kopecek <dkopecek@redhat.com>
  *
  * This code is derived from software contributed by Aaron Spangler.
@@ -211,7 +211,13 @@ sudo_sss_filter_result(struct sudo_sss_handle *handle,
        sudo_debug_printf(SUDO_DEBUG_DEBUG,
            "reallocating result: %p (count: %u -> %u)", out_res->rules,
            in_res->num_rules, l);
-       out_res->rules = erealloc3(out_res->rules, l, sizeof(struct sss_sudo_rule));
+       if (l > 0) {
+           out_res->rules =
+               erealloc3(out_res->rules, l, sizeof(struct sss_sudo_rule));
+       } else {
+           efree(out_res->rules);
+           out_res->rules = NULL;
+       }
     }
 
     out_res->num_rules = l;