Download raw body.
unsigned char cast for is* ctype.h macros
On Thu, Nov 17, 2022 at 09:39:32AM +0100, Omar Polo wrote:
> this should 'fix' them all, except for the various parse.y. A grep in
> usr.sbin shows that noone casts there. (these calls are present in
> the parse.y files and not added by yacc.)
>
> the ones in diff are maybe a bit redundant, except for one or two case
> all should already pass uint8_t and/or unsigned char, changing just in
> case in the future the types will change.
>
> (if ok i'll commit the diff bits separately to diff.git and then sync
> as usual.)
Thanks for checking. I'm surprised we still have calls into
ctype functions which lack casts.
The diff.git file changes should be separated out and committed
to diff.git first.
ok stsp@
> diff /home/op/w/gotd
> commit - c2a4f618fa3c9683fbb5f384b117f7e45a041122
> path + /home/op/w/gotd
> blob - 238ecb9d0ee975efd8eacc55de14b8cfb69792de
> file + lib/diff_atomize_text.c
> --- lib/diff_atomize_text.c
> +++ lib/diff_atomize_text.c
> @@ -69,7 +69,7 @@ diff_data_atomize_text_lines_fd(struct diff_data *d)
> while (eol == 0 && i < r) {
> if (buf[i] != '\r' && buf[i] != '\n') {
> if (!ignore_whitespace
> - || !isspace(buf[i]))
> + || !isspace((unsigned char)buf[i]))
> hash = diff_atom_hash_update(
> hash, buf[i]);
> if (buf[i] == '\0')
> @@ -142,7 +142,7 @@ diff_data_atomize_text_lines_mmap(struct diff_data *d)
>
> while (line_end < end && *line_end != '\r' && *line_end != '\n') {
> if (!ignore_whitespace
> - || !isspace(*line_end))
> + || !isspace((unsigned char)*line_end))
> hash = diff_atom_hash_update(hash, *line_end);
> if (*line_end == '\0')
> embedded_nul = true;
> blob - 26fa788bccf6fc4e54a3c2efe5e6a389a1d34032
> file + lib/diff_main.c
> --- lib/diff_main.c
> +++ lib/diff_main.c
> @@ -62,11 +62,11 @@ buf_cmp(const unsigned char *left, size_t left_len,
> unsigned char cl = left[il];
> unsigned char cr = right[ir];
>
> - if (isspace(cl) && il < left_len) {
> + if (isspace((unsigned char)cl) && il < left_len) {
> il++;
> continue;
> }
> - if (isspace(cr) && ir < right_len) {
> + if (isspace((unsigned char)cr) && ir < right_len) {
> ir++;
> continue;
> }
> @@ -80,12 +80,12 @@ buf_cmp(const unsigned char *left, size_t left_len,
> }
> while (il < left_len) {
> unsigned char cl = left[il++];
> - if (!isspace(cl))
> + if (!isspace((unsigned char)cl))
> return 1;
> }
> while (ir < right_len) {
> unsigned char cr = right[ir++];
> - if (!isspace(cr))
> + if (!isspace((unsigned char)cr))
> return -1;
> }
>
> blob - a487dffb531fb051aa859f3c1ac13816fdfcd926
> file + lib/gitproto.c
> --- lib/gitproto.c
> +++ lib/gitproto.c
> @@ -54,13 +54,13 @@ tokenize_line(char **tokens, char *line, int len, int
> tokens[i] = NULL;
>
> for (i = 0; n < len && i < maxtokens; i++) {
> - while (isspace(*line)) {
> + while (isspace((unsigned char)*line)) {
> line++;
> n++;
> }
> p = line;
> while (*line != '\0' && n < len &&
> - (!isspace(*line) || i == maxtokens - 1)) {
> + (!isspace((unsigned char)*line) || i == maxtokens - 1)) {
> line++;
> n++;
> }
> blob - 114e0ca8c6f110af5f8ebfd87ac1cdd552fbc92c
> file + lib/object_parse.c
> --- lib/object_parse.c
> +++ lib/object_parse.c
> @@ -410,12 +410,14 @@ parse_gmtoff(time_t *gmtoff, const char *tzstr)
> else if (*p != '+')
> return got_error(GOT_ERR_BAD_OBJ_DATA);
> p++;
> - if (!isdigit(*p) && !isdigit(*(p + 1)))
> + if (!isdigit((unsigned char)*p) &&
> + !isdigit((unsigned char)*(p + 1)))
> return got_error(GOT_ERR_BAD_OBJ_DATA);
> h = (((*p - '0') * 10) + (*(p + 1) - '0'));
>
> p += 2;
> - if (!isdigit(*p) && !isdigit(*(p + 1)))
> + if (!isdigit((unsigned char)*p) &&
> + !isdigit((unsigned char)*(p + 1)))
> return got_error(GOT_ERR_BAD_OBJ_DATA);
> m = ((*p - '0') * 10) + (*(p + 1) - '0');
>
> blob - 52cedcef2588aa0c074d4d486c05e33a3bac7eb4
> file + lib/pkt.c
> --- lib/pkt.c
> +++ lib/pkt.c
> @@ -144,7 +144,7 @@ got_pkt_readpkt(int *outlen, int fd, char *buf, int bu
> if (chattygot > 1) {
> fprintf(stderr, "%s: readpkt: %zd:\t", getprogname(), n);
> for (i = 0; i < n; i++) {
> - if (isprint(buf[i]))
> + if (isprint((unsigned char)buf[i]))
> fputc(buf[i], stderr);
> else
> fprintf(stderr, "[0x%.2x]", buf[i]);
> @@ -179,7 +179,7 @@ got_pkt_writepkt(int fd, char *buf, int nbuf, int chat
> if (chattygot > 1) {
> fprintf(stderr, "%s: writepkt: %s:\t", getprogname(), len);
> for (i = 0; i < nbuf; i++) {
> - if (isprint(buf[i]))
> + if (isprint((unsigned char)buf[i]))
> fputc(buf[i], stderr);
> else
> fprintf(stderr, "[0x%.2x]", buf[i]);
> blob - 4fa55782d6cfa72a92ffedfb310e3ac0e508e55c
> file + libexec/got-fetch-pack/got-fetch-pack.c
> --- libexec/got-fetch-pack/got-fetch-pack.c
> +++ libexec/got-fetch-pack/got-fetch-pack.c
> @@ -208,7 +208,7 @@ fetch_error(const char *buf, size_t len)
> size_t i;
>
> for (i = 0; i < len && i < sizeof(msg) - 1; i++) {
> - if (!isprint(buf[i]))
> + if (!isprint((unsigned char)buf[i]))
> return got_error_msg(GOT_ERR_BAD_PACKET,
> "non-printable error message received from server");
> msg[i] = buf[i];
> blob - 7069d8b17d0928e260d85033e81ff7ac104c27dd
> file + libexec/got-send-pack/got-send-pack.c
> --- libexec/got-send-pack/got-send-pack.c
> +++ libexec/got-send-pack/got-send-pack.c
> @@ -181,7 +181,7 @@ send_error(const char *buf, size_t len)
> size_t i;
>
> for (i = 0; i < len && i < sizeof(msg) - 1; i++) {
> - if (!isprint(buf[i]))
> + if (!isprint((unsigned char)buf[i]))
> return got_error_msg(GOT_ERR_BAD_PACKET,
> "non-printable error message received from server");
> msg[i] = buf[i];
>
>
unsigned char cast for is* ctype.h macros