diff options
author | Jonathan Conder <jonno.conder@gmail.com> | 2011-02-05 13:39:37 +1300 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2011-02-27 13:32:41 -0600 |
commit | acd9269478dbc40f1dac64d8f6ddfbb5f562ad09 (patch) | |
tree | da62cb17e4cc96ebb4d313c9f8d514b8e9d67e49 /lib/libalpm/util.c | |
parent | e8f799ba83904db2a347e7d37fe217216a0faf90 (diff) | |
download | pacman-acd9269478dbc40f1dac64d8f6ddfbb5f562ad09.tar.xz |
Fix double close of the lock file
According to FOPEN(3), using fclose on an fdopen'd file stream also
closes the underlying file descriptor. This happened in _alpm_lckmk
(util.c), which meant that when alpm_trans_release closed it again, the
log file (which reused the original file descriptor) was closed instead.
Signed-off-by: Jonathan Conder <jonno.conder@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'lib/libalpm/util.c')
-rw-r--r-- | lib/libalpm/util.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c index 458f750a..149a7f80 100644 --- a/lib/libalpm/util.c +++ b/lib/libalpm/util.c @@ -211,7 +211,7 @@ char *_alpm_strtrim(char *str) } /* Create a lock file */ -int _alpm_lckmk(void) +FILE *_alpm_lckmk(void) { int fd; char *dir, *ptr; @@ -234,10 +234,9 @@ int _alpm_lckmk(void) fprintf(f, "%ld\n", (long)getpid()); fflush(f); fsync(fd); - fclose(f); - return(fd); + return(f); } - return(-1); + return(NULL); } /* Remove a lock file */ |