Justus Winter, le Sat 16 Nov 2013 10:58:15 +0100, a écrit :
> Found using the Clang Static Analyzer.
>
> * libdiskfs/dir-renamed.c (diskfs_rename_dir): Fix error handling.
Ack!
It was really bad, AIUI it meant creating 32000 directories in the same
parent leads to leaked locked mutexes.
> ---
> libdiskfs/dir-renamed.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libdiskfs/dir-renamed.c b/libdiskfs/dir-renamed.c
> index d73dc28..9b7ec3a 100644
> --- a/libdiskfs/dir-renamed.c
> +++ b/libdiskfs/dir-renamed.c
> @@ -132,7 +132,7 @@ diskfs_rename_dir (struct node *fdp, struct node *fnp,
> const char *fromname,
> if (tdp->dn_stat.st_nlink == diskfs_link_max - 1)
> {
> err = EMLINK;
> - return EMLINK;
> + goto out;
> }
> tdp->dn_stat.st_nlink++;
> tdp->dn_set_ctime = 1;
> --
> 1.7.10.4
>
--
Samuel
if (argc > 1 && strcmp(argv[1], "-advice") == 0) {
printf("Don't Panic!\n");
exit(42);
}
-- Arnold Robbins in the LJ of February '95, describing RCS