r22755: Second half of r22754. As it stands now, string_replace expects a
authorVolker Lendecke <vlendec@samba.org>
Mon, 7 May 2007 20:53:10 +0000 (20:53 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:21:54 +0000 (12:21 -0500)
pstring. Give it one, although I hate putting it in :-)

Thanks to Tom Bork! :-)
(This used to be commit f4ea3fd36543120fa7d712e6e650c704e4e23759)

source3/smbd/notify.c

index d18bbb180f4a2dedf425578bb80e416109cbd7cf..b2ac26764af5554be1067ea62cd420a174001dc5 100644 (file)
@@ -337,7 +337,7 @@ void notify_fname(connection_struct *conn, uint32 action, uint32 filter,
 static void notify_fsp(files_struct *fsp, uint32 action, const char *name)
 {
        struct notify_change *change, *changes;
-       char *name2;
+       pstring name2;
 
        if (fsp->notify == NULL) {
                /*
@@ -346,11 +346,7 @@ static void notify_fsp(files_struct *fsp, uint32 action, const char *name)
                return;
        }
 
-       if (!(name2 = talloc_strdup(fsp->notify, name))) {
-               DEBUG(0, ("talloc_strdup failed\n"));
-                       return;
-       }
-
+       pstrcpy(name2, name);
        string_replace(name2, '/', '\\');
 
        /*
@@ -364,7 +360,6 @@ static void notify_fsp(files_struct *fsp, uint32 action, const char *name)
                 * guard against a DoS here.
                 */
                TALLOC_FREE(fsp->notify->changes);
-               TALLOC_FREE(name2);
                fsp->notify->num_changes = -1;
                return;
        }
@@ -377,7 +372,6 @@ static void notify_fsp(files_struct *fsp, uint32 action, const char *name)
                      fsp->notify, fsp->notify->changes,
                      struct notify_change, fsp->notify->num_changes+1))) {
                DEBUG(0, ("talloc_realloc failed\n"));
-               TALLOC_FREE(name2);
                return;
        }
 
@@ -385,7 +379,11 @@ static void notify_fsp(files_struct *fsp, uint32 action, const char *name)
 
        change = &(fsp->notify->changes[fsp->notify->num_changes]);
 
-       change->name = talloc_move(changes, &name2);
+       if (!(change->name = talloc_strdup(changes, name2))) {
+               DEBUG(0, ("talloc_strdup failed\n"));
+               return;
+       }
+
        change->action = action;
        fsp->notify->num_changes += 1;
 
@@ -401,7 +399,7 @@ static void notify_fsp(files_struct *fsp, uint32 action, const char *name)
                 * We have to send the two rename events in one reply. So hold
                 * the first part back.
                 */
-       return;
+               return;
        }
 
        /*