Browse code

fix fd leak on EACCES/EAGAIN (bb#400)

git-svn: trunk@2925

Tomasz Kojm authored on 2007/03/10 06:56:27
Showing 2 changed files
... ...
@@ -1,3 +1,7 @@
1
+Fri Mar  9 21:02:31 CET 2007 (tk)
2
+---------------------------------
3
+  * libclamav/lockdb.c: fix fd leak on EACCES/EAGAIN (bb#400)
4
+
1 5
 Fri Mar  9 13:34:52 CET 2007 (tk)
2 6
 ---------------------------------
3 7
   * libclamav: improve backward compatibility (bb#393)
... ...
@@ -268,9 +268,9 @@ static int cli_lockdb(const char *dbdirpath, int wait, int writelock)
268 268
     fl.l_type = (writelock ? F_WRLCK : F_RDLCK);
269 269
     if(fcntl(lock->lock_fd, ((wait) ? F_SETLKW : F_SETLK), &fl) == -1) {
270 270
 #ifndef C_WINDOWS
271
+	close(lock->lock_fd);
272
+	lock->lock_fd = -1;
271 273
 	if(errno != EACCES && errno != EAGAIN) {
272
-	    close(lock->lock_fd);
273
-	    lock->lock_fd=-1;
274 274
 	    if(!existing)
275 275
 		unlink(lock->lock_file);
276 276
 	    cli_errmsg("Can't acquire %s lock: %s\n", writelock ? "write" : "read", strerror(errno));