svn commit: r314189 - head/lib/libcam

Ian Lepore ian at freebsd.org
Fri Feb 24 15:36:42 UTC 2017


On Fri, 2017-02-24 at 06:24 +0000, Ngie Cooper wrote:
> Author: ngie
> Date: Fri Feb 24 06:24:39 2017
> New Revision: 314189
> URL: https://svnweb.freebsd.org/changeset/base/314189
> 
> Log:
>   Fix up NULL/'\0' uses and fix 2 derefs after NULL
>   
>   MFC after:	2 weeks
>   Reported by:	Coverity
>   CID:		1018898, 1018899
>   Differential Revision:	https://reviews.freebsd.org/D6142
>   Sponsored by:	Dell EMC Isilon
> 
> Modified:
>   head/lib/libcam/scsi_cmdparse.c
> 
> Modified: head/lib/libcam/scsi_cmdparse.c
> =====================================================================
> =========
> --- head/lib/libcam/scsi_cmdparse.c	Fri Feb 24 01:39:12 2017	
> (r314188)
> +++ head/lib/libcam/scsi_cmdparse.c	Fri Feb 24 06:24:39 2017	
> (r314189)
> @@ -128,14 +128,14 @@ do_buff_decode(u_int8_t *buff, size_t le
>  				*(va_arg(*ap, int *)) = (ARG); \
>  			assigned++; \
>  		} \
> -		field_name[0] = 0; \
> +		field_name[0] = '\0'; \

Is coverity seriously complaining about using 0 instead of '\0'?  What
possible *real* benefit (not just shutting up coverity) does this churn
bring?

-- Ian

>  		suppress = 0; \
>  	} while (0)
>  
>  	u_char bits = 0;	/* For bit fields */
>  	int shift = 0;		/* Bits already shifted out */
>  	suppress = 0;
> -	field_name[0] = 0;
> +	field_name[0] = '\0';
>  
>  	while (!done) {
>  		switch(letter = *fmt) {
> @@ -169,9 +169,9 @@ do_buff_decode(u_int8_t *buff, size_t le
>  
>  				fmt++;
>  			}
> -			if (fmt)
> +			if (*fmt == '\0')
>  				fmt++;	/* Skip '}' */
> -			field_name[i] = 0;
> +			field_name[i] = '\0';
>  			break;
>  		}
>  
> @@ -255,7 +255,7 @@ do_buff_decode(u_int8_t *buff, size_t le
>  				break;
>  			}
>  			if (!suppress) {
> -				if (arg_put)
> +				if (arg_put != NULL)
>  					(*arg_put)(puthook,
>  					    (letter == 't' ? 'b' :
> letter),
>  					    &buff[ind], width,
> field_name);
> @@ -268,7 +268,7 @@ do_buff_decode(u_int8_t *buff, size_t le
>  						for (p = dest +
> width - 1;
>  						    p >= dest && *p
> == ' ';
>  						    p--)
> -							*p = 0;
> +							*p = '\0';
>  					}
>  				}
>  				assigned++;
> @@ -379,22 +379,22 @@ next_field(const char **pp, char *fmt, i
>  	field_size = 8;		/* Default to byte field
> type... */
>  	*fmt = 'i';
>  	field_width = 1;	/* 1 byte wide */
> -	if (name)
> -		*name = 0;
> +	if (name != NULL)
> +		*name = '\0';
>  
>  	state = BETWEEN_FIELDS;
>  
>  	while (state != DONE) {
>  		switch(state) {
>  		case BETWEEN_FIELDS:
> -			if (*p == 0)
> +			if (*p == '\0')
>  				state = DONE;
>  			else if (isspace(*p))
>  				p++;
>  			else if (*p == '#') {
>  				while (*p && *p != '\n')
>  					p++;
> -				if (p)
> +				if (*p != '\0')
>  					p++;
>  			} else if (*p == '{') {
>  				int i = 0;
> @@ -410,7 +410,7 @@ next_field(const char **pp, char *fmt, i
>  				}
>  
>  				if(name && i < n_name)
> -					name[i] = 0;
> +					name[i] = '\0';
>  
>  				if (*p == '}')
>  					p++;
> @@ -568,7 +568,7 @@ do_encode(u_char *buff, size_t vec_max, 
>  			if (suppress)
>  				value = 0;
>  			else
> -				value = arg_get ?
> +				value = arg_get != NULL ?
>  					(*arg_get)(gethook,
> field_name) :
>  					va_arg(*ap, int);
>  		}
> @@ -672,8 +672,8 @@ csio_decode(struct ccb_scsiio *csio, con
>  
>  	va_start(ap, fmt);
>  
> -	retval = do_buff_decode(csio->data_ptr, (size_t)csio-
> >dxfer_len, 0, 0,
> -		 fmt, &ap);
> +	retval = do_buff_decode(csio->data_ptr, (size_t)csio-
> >dxfer_len,
> +	    NULL, NULL, fmt, &ap);
>  
>  	va_end(ap);
>  
> @@ -705,7 +705,7 @@ buff_decode(u_int8_t *buff, size_t len, 
>  
>  	va_start(ap, fmt);
>  
> -	retval = do_buff_decode(buff, len, 0, 0, fmt, &ap);
> +	retval = do_buff_decode(buff, len, NULL, NULL, fmt, &ap);
>  
>  	va_end(ap);
>  
> @@ -819,7 +819,8 @@ csio_encode(struct ccb_scsiio *csio, con
>  
>  	va_start(ap, fmt);
>  
> -	retval = do_encode(csio->data_ptr, csio->dxfer_len, 0, 0, 0,
> fmt, &ap);
> +	retval = do_encode(csio->data_ptr, csio->dxfer_len, NULL,
> NULL, NULL,
> +	    fmt, &ap);
>  
>  	va_end(ap);
>  
> @@ -838,7 +839,7 @@ buff_encode_visit(u_int8_t *buff, size_t
>  	if (arg_get == NULL)
>  		return(-1);
>  
> -	return (do_encode(buff, len, 0, arg_get, gethook, fmt,
> NULL));
> +	return (do_encode(buff, len, NULL, arg_get, gethook, fmt,
> NULL));
>  }
>  
>  int
> @@ -853,6 +854,6 @@ csio_encode_visit(struct ccb_scsiio *csi
>  	if (arg_get == NULL)
>  		return(-1);
>  
> -	return (do_encode(csio->data_ptr, csio->dxfer_len, 0,
> arg_get,
> +	return (do_encode(csio->data_ptr, csio->dxfer_len, NULL,
> arg_get,
>  			 gethook, fmt, NULL));
>  }
> 


More information about the svn-src-head mailing list