]> git.saurik.com Git - apple/security.git/blobdiff - OSX/libsecurityd/lib/sec_xdr_array.c
Security-59754.80.3.tar.gz
[apple/security.git] / OSX / libsecurityd / lib / sec_xdr_array.c
index 8d81b7976e341ccc38fd8d0662ec13734b87e5a7..e5bcc87ac1149babd89e16898201efa6fbc71029 100644 (file)
@@ -72,7 +72,7 @@ static char *sccsid = "@(#)xdr_array.c    2.1 88/07/29 4.0 RPCSRC";
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <assert.h>
+#include <security_utilities/simulatecrash_assert.h>
 
 #include "sec_xdr.h"
 
 
 #include "sec_xdr.h"
 
@@ -129,8 +129,9 @@ sec_xdr_array(XDR *xdrs, uint8_t **addrp, u_int *sizep, u_int maxsize, u_int els
                                return (FALSE);
                        if (!target)
                                target = &obj[0];
                                return (FALSE);
                        if (!target)
                                target = &obj[0];
-            if (!sizeof_alloc)
+            if (!sizeof_alloc && addrp != NULL) {
                                *addrp = target;
                                *addrp = target;
+            }
             break;
 
         case XDR_FREE:
             break;
 
         case XDR_FREE:
@@ -155,7 +156,7 @@ sec_xdr_array(XDR *xdrs, uint8_t **addrp, u_int *sizep, u_int maxsize, u_int els
     /*
      * the array may need freeing
      */
     /*
      * the array may need freeing
      */
-    if (xdrs->x_op == XDR_FREE) {
+    if (xdrs->x_op == XDR_FREE && addrp != NULL) {
         sec_mem_free(xdrs, *addrp, nodesize);
         *addrp = NULL;
     }
         sec_mem_free(xdrs, *addrp, nodesize);
         *addrp = NULL;
     }