diff options
| -rw-r--r-- | src/passwd/getgrouplist.c | 3 | 
1 files changed, 2 insertions, 1 deletions
| diff --git a/src/passwd/getgrouplist.c b/src/passwd/getgrouplist.c index 43e51824..301824ce 100644 --- a/src/passwd/getgrouplist.c +++ b/src/passwd/getgrouplist.c @@ -31,7 +31,8 @@ int getgrouplist(const char *user, gid_t gid, gid_t *groups, int *ngroups)  	if (resp[INITGRFOUND]) {  		nscdbuf = calloc(resp[INITGRNGRPS], sizeof(uint32_t));  		if (!nscdbuf) goto cleanup; -		if (!fread(nscdbuf, sizeof(*nscdbuf)*resp[INITGRNGRPS], 1, f)) { +		size_t nbytes = sizeof(*nscdbuf)*resp[INITGRNGRPS]; +		if (nbytes && !fread(nscdbuf, nbytes, 1, f)) {  			if (!ferror(f)) errno = EIO;  			goto cleanup;  		} | 
