Re: [PATCH] Fix 2 dc stream buffer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 8/11/21 9:39 AM, Nigel Croxon wrote:
> To meet requirements of Common Criteria certification vulnerablility
> assessment. Static code analysis has been run and found the following
> Error: DC.STREAM_BUFFER (CWE-120): [#def46]
> mdadm-4.2: dont_call: "fscanf" assumes an arbitrarily
> long string, so callers must use correct precision specifiers or
> never use "fscanf".
> 
> The change is to define a value for string %s.
> 
> Signed-off-by: Nigel Croxon <ncroxon@xxxxxxxxxx>
> ---
>  Monitor.c | 2 +-
>  policy.c  | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/Monitor.c b/Monitor.c
> index f5412299..8bd3b5a1 100644
> --- a/Monitor.c
> +++ b/Monitor.c
> @@ -359,7 +359,7 @@ static int check_one_sharer(int scan)
>  			 "/proc/%d/comm", pid);
>  		comm_fp = fopen(comm_path, "r");
>  		if (comm_fp) {
> -			if (fscanf(comm_fp, "%s", comm) &&
> +			if (fscanf(comm_fp, "%19s", comm) &&
>  			    strncmp(basename(comm), Name, strlen(Name)) == 0) {
>  				if (scan) {
>  					pr_err("Only one autorebuild process allowed in scan mode, aborting\n");
> diff --git a/policy.c b/policy.c
> index 3c53bd35..e9760a65 100644
> --- a/policy.c
> +++ b/policy.c
> @@ -784,7 +784,7 @@ int policy_check_path(struct mdinfo *disk, struct map_ent *array)
>  		if (!f)
>  			continue;
>  
> -		rv = fscanf(f, " %s %x:%x:%x:%x\n",
> +		rv = fscanf(f, " %255s %x:%x:%x:%x\n",
>  			    array->metadata,
>  			    array->uuid,
>  			    array->uuid+1,
> 

1) array->metadata is 20 bytes long but you set a limit of 255 which
could easily overflow it.

2) You address policy_check_path() but don't fix policy_save_path()
right above it which has the same issue.

Please fix.

Jes



[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux