s3:auth fix info3 duplication function
authorSimo Sorce <ssorce@redhat.com>
Fri, 28 May 2010 17:35:56 +0000 (13:35 -0400)
committerSimo Sorce <ssorce@redhat.com>
Sat, 29 May 2010 21:08:02 +0000 (17:08 -0400)
source3/auth/server_info.c

index 2545e7d58fb7da05b375eba808f15b9261882503..f72cdbaae9a1cd36db2e0da6d1ab118e966d1ee9 100644 (file)
@@ -392,6 +392,7 @@ struct netr_SamInfo3 *copy_netr_SamInfo3(TALLOC_CTX *mem_ctx,
                                         struct netr_SamInfo3 *orig)
 {
        struct netr_SamInfo3 *info3;
+       unsigned int i;
 
        info3 = talloc_zero(mem_ctx, struct netr_SamInfo3);
        if (!info3) return NULL;
@@ -455,10 +456,14 @@ struct netr_SamInfo3 *copy_netr_SamInfo3(TALLOC_CTX *mem_ctx,
        }
 
        if (orig->sidcount) {
-               info3->sids = (struct netr_SidAttr *)talloc_memdup(info3, orig->sids,
-                                           (sizeof(struct netr_SidAttr) *
-                                                       orig->sidcount));
+               info3->sids = talloc_array(info3, struct netr_SidAttr,
+                                          orig->sidcount);
                RET_NOMEM(info3->sids);
+               for (i = 0; i < orig->sidcount; i++) {
+                       info3->sids[i].sid = sid_dup_talloc(info3->sids,
+                                                           orig->sids[i].sid);
+                       RET_NOMEM(info3->sids[i].sid);
+               }
        }
 
        return info3;