git-svn: trunk@2303
Tomasz Kojm authored on 2006/09/23 06:47:15... | ... |
@@ -1,3 +1,7 @@ |
1 |
+Fri Sep 22 23:42:09 CEST 2006 (tk) |
|
2 |
+---------------------------------- |
|
3 |
+ * libclamav/others.c: improve error handling in cli_rmdirs() |
|
4 |
+ |
|
1 | 5 |
Thu Sep 21 17:39:29 BST 2006 (njh) |
2 | 6 |
---------------------------------- |
3 | 7 |
* libclamav/mbox.c: Experimental mode now no longer uses libcurl to |
... | ... |
@@ -617,6 +617,7 @@ int cli_rmdirs(const char *dirname) |
617 | 617 |
#endif |
618 | 618 |
struct stat maind, statbuf; |
619 | 619 |
char *fname; |
620 |
+ int ret; |
|
620 | 621 |
|
621 | 622 |
|
622 | 623 |
chmod(dirname, 0700); |
... | ... |
@@ -626,7 +627,7 @@ int cli_rmdirs(const char *dirname) |
626 | 626 |
if(errno != ENOTEMPTY && errno != EEXIST && errno != EBADF) { |
627 | 627 |
cli_errmsg("Can't remove temporary directory %s: %s\n", dirname, strerror(errno)); |
628 | 628 |
closedir(dd); |
629 |
- return 0; |
|
629 |
+ return -1; |
|
630 | 630 |
} |
631 | 631 |
|
632 | 632 |
#ifdef HAVE_READDIR_R_3 |
... | ... |
@@ -661,13 +662,23 @@ int cli_rmdirs(const char *dirname) |
661 | 661 |
cli_errmsg("Can't remove some temporary directories due to access problem.\n"); |
662 | 662 |
closedir(dd); |
663 | 663 |
free(fname); |
664 |
- return 0; |
|
664 |
+ return -1; |
|
665 |
+ } |
|
666 |
+ ret = cli_rmdirs(fname); |
|
667 |
+ if(ret) { |
|
668 |
+ cli_warnmsg("Can't remove directory %s\n", fname); |
|
669 |
+ free(fname); |
|
670 |
+ closedir(dd); |
|
671 |
+ return -1; |
|
665 | 672 |
} |
666 |
- cli_rmdirs(fname); |
|
667 | 673 |
} |
668 | 674 |
} else |
669 |
- if(unlink(fname) < 0) |
|
675 |
+ if(unlink(fname) < 0) { |
|
670 | 676 |
cli_warnmsg("Couldn't remove %s: %s\n", fname, strerror(errno)); |
677 |
+ free(fname); |
|
678 |
+ closedir(dd); |
|
679 |
+ return -1; |
|
680 |
+ } |
|
671 | 681 |
} |
672 | 682 |
|
673 | 683 |
free(fname); |