+2009-11-23 Christos Zoulas <christos@zoulas.com>
+
+ * The temporary filename buffer was leaked in lock_mtab().
+ From: Krisztian Kovacs <Kris.Kovacs@morganstanley.com>
+
2009-10-27 Christos Zoulas <christos@zoulas.com>
* Deal with errno.h->sys/errno.h better
int tries = 100000, i;
char *linktargetfile;
size_t l;
+ int rc = 1;
/*
* Redhat's original code set a signal handler called "handler()" for all
(void) unlink(linktargetfile);
plog(XLOG_ERROR, "can't link lock file %s: %s ",
MOUNTED_LOCK, strerror(errsv));
- return 0;
+ rc = 0;
+ goto error;
}
lockfile_fd = open(MOUNTED_LOCK, O_WRONLY);
(void) unlink(linktargetfile);
plog(XLOG_ERROR,"can't open lock file %s: %s ",
MOUNTED_LOCK, strerror(errsv));
- return 0;
+ rc = 0;
+ goto error;
}
flock.l_type = F_WRLCK;
plog(XLOG_ERROR, "can't lock lock file %s: %s",
MOUNTED_LOCK, (errno == EINTR) ?
"timed out" : strerror(errsv));
- return 0;
+ rc = 0;
+ goto error;
}
alarm(0);
/*
plog(XLOG_ERROR,
"Cannot create link %s; Perhaps there is a stale lock file?",
MOUNTED_LOCK);
+ rc = 0;
+ goto error;
}
close(lockfile_fd);
}
}
- return 1;
+
+error:
+ if (linktargetfile != NULL) {
+ XFREE(linktargetfile);
+ }
+
+ return rc;
}