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-all
mailing list