]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
ubik: Avoid unlinking garbage
authorSimon Wilkinson <sxw@your-file-system.com>
Wed, 27 Feb 2013 10:34:59 +0000 (10:34 +0000)
committerStephan Wiesand <stephan.wiesand@desy.de>
Wed, 3 Apr 2013 18:15:24 +0000 (11:15 -0700)
If SDISK_SendFail fails before the pathname to the temporary file
has been constructed, then the failure handler will unlink stack
garbage, with variable results.

Initialise the string, and check to see if it has contents before
calling unlink

Reviewed-on: http://gerrit.openafs.org/9299
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
(cherry picked from commit 44e806431bec3149a78127f5d1003e84e3a0b072)

Change-Id: I366de3ce15a5e1ea855eb45110ff7acf1748c377
Reviewed-on: http://gerrit.openafs.org/9538
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
src/ubik/remote.c

index 75330a670f3eb00c235c9ee114985f36203b3258..83ede63ee467fde545145d76c2d7c78f4716aa6f 100644 (file)
@@ -495,6 +495,7 @@ SDISK_SendFile(struct rx_call *rxcall, afs_int32 file,
     /* send the file back to the requester */
 
     dbase = ubik_dbase;
+    pbuffer[0] = '\0';
 
     if ((code = ubik_CheckAuth(rxcall))) {
        DBHOLD(dbase);
@@ -625,7 +626,8 @@ SDISK_SendFile(struct rx_call *rxcall, afs_int32 file,
 failed:
     if (code) {
 #ifndef OLD_URECOVERY
-       unlink(pbuffer);
+       if (pbuffer[0] != '\0')
+           unlink(pbuffer);
        /* Failed to sync. Allow reads again for now. */
        if (dbase != NULL) {
            tversion.epoch = epoch;