mirror of
https://github.com/RsyncProject/rsync.git
synced 2026-08-02 08:47:28 -04:00
scan-build: fix resource leaks on error paths
clientserver.c: close the --early-input-file FILE* on the fstat/oversize/early-EOF error returns; it was only closed on the success path. getgroups.c: free the gid list before returning.
This commit is contained in:
@@ -270,11 +270,14 @@ int start_inband_exchange(int f_in, int f_out, const char *user, int argc, char
|
||||
FILE *f = fopen(early_input_file, "rb");
|
||||
if (!f || do_fstat(fileno(f), &st) < 0) {
|
||||
rsyserr(FERROR, errno, "failed to open %s", early_input_file);
|
||||
if (f)
|
||||
fclose(f);
|
||||
return -1;
|
||||
}
|
||||
early_input_len = st.st_size;
|
||||
if (early_input_len > (int)sizeof line) {
|
||||
rprintf(FERROR, "%s is > %d bytes.\n", early_input_file, (int)sizeof line);
|
||||
fclose(f);
|
||||
return -1;
|
||||
}
|
||||
if (early_input_len > 0) {
|
||||
@@ -283,6 +286,7 @@ int start_inband_exchange(int f_in, int f_out, const char *user, int argc, char
|
||||
int len;
|
||||
if (feof(f)) {
|
||||
rprintf(FERROR, "Early EOF in %s\n", early_input_file);
|
||||
fclose(f);
|
||||
return -1;
|
||||
}
|
||||
len = fread(line, 1, early_input_len, f);
|
||||
|
||||
@@ -57,5 +57,6 @@
|
||||
printf("%lu", (unsigned long)gid);
|
||||
printf("\n");
|
||||
|
||||
free(list);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user