[PATCH v3] kexec/fs2dt: Check for NULL pointer in dt_copy_old_root_param()

Dave Young dyoung at redhat.com
Thu Oct 6 21:06:57 PDT 2016


On 10/04/16 at 07:07am, Madhavan Srinivasan wrote:
> In dt_copy_old_root_param(), FILE * returned
> from fopen is not checked for NULL pointer
> before passinig to fclose(). This could trigger
> a segfault. Patch to fix the same.
> 
> Signed-off-by: Madhavan Srinivasan <maddy at linux.vnet.ibm.com>
> ---
> Changelog v2
> -Removed redundant check fp
> 
> Changelog v1:
> - Moved the check right after fopen
>  
>  kexec/fs2dt.c | 26 ++++++++++++++------------
>  1 file changed, 14 insertions(+), 12 deletions(-)
> 
> diff --git a/kexec/fs2dt.c b/kexec/fs2dt.c
> index 6ed2399759cf..79aa0f320a5a 100644
> --- a/kexec/fs2dt.c
> +++ b/kexec/fs2dt.c
> @@ -524,19 +524,21 @@ static void dt_copy_old_root_param(void)
>  	strcpy(filename, pathname);
>  	strcat(filename, "bootargs");
>  	fp = fopen(filename, "r");
> -	if (fp) {
> -		if (getline(&last_cmdline, &len, fp) == -1)
> -			die("unable to read %s\n", filename);
> -
> -		p = strstr(last_cmdline, "root=");
> -		if (p) {
> -			old_param = strtok(p, " ");
> -			len = strlen(local_cmdline);
> -			if (len != 0)
> -				strcat(local_cmdline, " ");
> -			strcat(local_cmdline, old_param);
> -		}
> +	if (!fp)
> +		return;
> +
> +	if (getline(&last_cmdline, &len, fp) == -1)
> +		die("unable to read %s\n", filename);
> +
> +	p = strstr(last_cmdline, "root=");
> +	if (p) {
> +		old_param = strtok(p, " ");
> +		len = strlen(local_cmdline);
> +		if (len != 0)
> +			strcat(local_cmdline, " ");
> +		strcat(local_cmdline, old_param);
>  	}
> +
>  	if (last_cmdline)
>  		free(last_cmdline);
>  
> -- 
> 2.7.4
> 
> 
> _______________________________________________
> kexec mailing list
> kexec at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec

Reviewed-by: Dave Young <dyoung at redhat.com>

Thanks
Dave



More information about the kexec mailing list