Skip to content

Conversation

@alejandro-colomar
Copy link
Collaborator

@alejandro-colomar alejandro-colomar commented Oct 18, 2025

Reported-by: @hallyn

I wrote this to reduce your eye bleeding. :)


Revisions:

v2
  • Add a few more cases that we've merged recently.
$ git rd 
 1:  0691ab244 =  1:  0691ab244 */: s/READLINKNUL/readlinknul_a/
 2:  bdfebb5b9 =  2:  bdfebb5b9 */: s/SIZEOF_ARRAY/sizeof_a/
 3:  3ccd539f6 =  3:  3ccd539f6 */: s/STRNDUPA/strndupa_a/
 4:  0cefd5d44 =  4:  0cefd5d44 */: s/STRNDUP/strndup_a/ s/XSTRNDUP/xstrndup_a/
 5:  674b4b619 =  5:  674b4b619 */: s/SNPRINTF/stprintf_a/
 6:  1b94b4400 =  6:  1b94b4400 */: s/STRNCAT/strncat_a/
 7:  60fe80c4a =  7:  60fe80c4a */: s/STRNCPY/strncpy_a/
 8:  1f2b5d25a =  8:  1f2b5d25a */: s/STRTCPY/strtcpy_a/
 9:  9cccdd1c9 =  9:  9cccdd1c9 */: s/MEMZERO/memzero_a/
10:  2f50e437b = 10:  2f50e437b */: s/STRFTIME/strftime_a/
11:  0cf97f44d = 11:  0cf97f44d */: s/STRSEP2LS/strsep2ls_a/
12:  efc5f20e9 = 12:  efc5f20e9 */: s/STRSEP2ARR/strsep2arr_a/
 -:  --------- > 13:  448f73346 */: s/DAY_TO_STR/day_to_str_a/
 -:  --------- > 14:  62d5f6fb0 */: s/STRNEQ/strneq_a/
 -:  --------- > 15:  75391236b lib/string/README: Document *_a() macros
v2b
  • Rebase
$ git rd 
 1:  0691ab244 !  1:  8f7739d84 */: s/READLINKNUL/readlinknul_a/
    @@ lib/tcbfuncs.c: static /*@null@*/ char *shadowtcb_path_rel_existing (const char
     +  if (readlinknul_a(path, link) == -1) {
                fprintf (shadow_logfd,
                         _("%s: Cannot read symbolic link %s: %s\n"),
    -                    shadow_progname, path, strerror (errno));
    +                    shadow_progname, path, strerrno());
     
      ## lib/user_busy.c ##
     @@ lib/user_busy.c: static int different_namespace (const char *sname)
 2:  bdfebb5b9 =  2:  ca486d635 */: s/SIZEOF_ARRAY/sizeof_a/
 3:  3ccd539f6 =  3:  e7b857009 */: s/STRNDUPA/strndupa_a/
 4:  0cefd5d44 =  4:  a79430528 */: s/STRNDUP/strndup_a/ s/XSTRNDUP/xstrndup_a/
 5:  674b4b619 !  5:  b60574b83 */: s/SNPRINTF/stprintf_a/
    @@ lib/get_pid.c: int open_pidfd(const char *pidstr)
     -  if (SNPRINTF(proc_dir_name, "/proc/%d/", target) == -1) {
     +  if (stprintf_a(proc_dir_name, "/proc/%d/", target) == -1) {
                fprintf(stderr, "snprintf of proc path failed for %d: %s\n",
    -                   target, strerror(errno));
    +                   target, strerrno());
                return -EINVAL;
     
      ## lib/hushed.c ##
    @@ src/useradd.c: set_defaults(void)
     +  assert(stprintf_a(buf, "%s-", default_file) != -1);
        unlink (buf);
        if ((link (default_file, buf) != 0) && (ENOENT != errno)) {
    -           int err = errno;
    +           fprintf (stderr,
     
      ## src/vipw.c ##
     @@ src/vipw.c: vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (bool))
 6:  1b94b4400 =  6:  aeca9ceba */: s/STRNCAT/strncat_a/
 7:  60fe80c4a =  7:  ceb5e52c1 */: s/STRNCPY/strncpy_a/
 8:  1f2b5d25a !  8:  0ae87fcdd */: s/STRTCPY/strtcpy_a/
    @@ lib/string/strcpy/strtcpy.h: inline ssize_t strtcpy(char *restrict dst, const ch
      strtcpy(char *restrict dst, const char *restrict src, size_t dsize)
      {
     
    - ## lib/utmp.c ##
    -@@ lib/utmp.c: is_my_tty(const char tty[UTX_LINESIZE])
    -   if (streq(tmptty, "")) {
    -           const char *tname = ttyname (STDIN_FILENO);
    -           if (NULL != tname)
    --                  STRTCPY(tmptty, tname);
    -+                  strtcpy_a(tmptty, tname);
    -   }
    - 
    -   if (streq(tmptty, "")) {
    -
      ## src/chage.c ##
     @@ src/chage.c: int main (int argc, char **argv)
                fail_exit (E_NOPERM, process_selinux);
 9:  9cccdd1c9 =  9:  b1568734a */: s/MEMZERO/memzero_a/
10:  2f50e437b = 10:  39e8fc0a9 */: s/STRFTIME/strftime_a/
11:  0cf97f44d = 11:  a79b30c7b */: s/STRSEP2LS/strsep2ls_a/
12:  efc5f20e9 = 12:  c90e954a6 */: s/STRSEP2ARR/strsep2arr_a/
13:  448f73346 = 13:  c58d8485c */: s/DAY_TO_STR/day_to_str_a/
14:  62d5f6fb0 = 14:  b2b37f605 */: s/STRNEQ/strneq_a/
15:  75391236b = 15:  ba24deba4 lib/string/README: Document *_a() macros
v2c
  • Rebase
$ git rd 
 1:  8f7739d84 =  1:  922b62cdc */: s/READLINKNUL/readlinknul_a/
 2:  ca486d635 =  2:  e3dfa7903 */: s/SIZEOF_ARRAY/sizeof_a/
 3:  e7b857009 =  3:  fca6be2a8 */: s/STRNDUPA/strndupa_a/
 4:  a79430528 =  4:  c660688dd */: s/STRNDUP/strndup_a/ s/XSTRNDUP/xstrndup_a/
 5:  b60574b83 !  5:  54d987cd2 */: s/SNPRINTF/stprintf_a/
    @@ src/newgrp.c: static void check_perms (const struct group *grp,
     -                  SNPRINTF(audit_buf, "authentication new_gid=%lu",
     +                  stprintf_a(audit_buf, "authentication new_gid=%lu",
                                 (unsigned long) grp->gr_gid);
    -                   audit_logger (AUDIT_GRP_AUTH, Prog,
    +                   audit_logger (AUDIT_GRP_AUTH,
                                      audit_buf, NULL, getuid (), SHADOW_AUDIT_FAILURE);
     @@ src/newgrp.c: static void check_perms (const struct group *grp,
                        goto failure;
    @@ src/newgrp.c: static void check_perms (const struct group *grp,
     -          SNPRINTF(audit_buf, "authentication new_gid=%lu",
     +          stprintf_a(audit_buf, "authentication new_gid=%lu",
                         (unsigned long) grp->gr_gid);
    -           audit_logger (AUDIT_GRP_AUTH, Prog,
    +           audit_logger (AUDIT_GRP_AUTH,
                              audit_buf, NULL, getuid (), SHADOW_AUDIT_SUCCESS);
     @@ src/newgrp.c: int main (int argc, char **argv)
        if (setgid (gid) != 0) {
    @@ src/newgrp.c: int main (int argc, char **argv)
      #ifdef WITH_AUDIT
     -          SNPRINTF(audit_buf, "changing new_gid=%lu", (unsigned long) gid);
     +          stprintf_a(audit_buf, "changing new_gid=%lu", (unsigned long) gid);
    -           audit_logger (AUDIT_CHGRP_ID, Prog,
    +           audit_logger (AUDIT_CHGRP_ID,
                              audit_buf, NULL, getuid (), SHADOW_AUDIT_FAILURE);
      #endif
     @@ src/newgrp.c: int main (int argc, char **argv)
    @@ src/newgrp.c: int main (int argc, char **argv)
      #ifdef WITH_AUDIT
     -          SNPRINTF(audit_buf, "changing new_gid=%lu", (unsigned long) gid);
     +          stprintf_a(audit_buf, "changing new_gid=%lu", (unsigned long) gid);
    -           audit_logger (AUDIT_CHGRP_ID, Prog,
    +           audit_logger (AUDIT_CHGRP_ID,
                              audit_buf, NULL, getuid (), SHADOW_AUDIT_FAILURE);
      #endif
     @@ src/newgrp.c: int main (int argc, char **argv)
    @@ src/newgrp.c: int main (int argc, char **argv)
      #ifdef WITH_AUDIT
     -          SNPRINTF(audit_buf, "changing new_gid=%lu", (unsigned long) gid);
     +          stprintf_a(audit_buf, "changing new_gid=%lu", (unsigned long) gid);
    -           audit_logger (AUDIT_CHGRP_ID, Prog,
    +           audit_logger (AUDIT_CHGRP_ID,
                              audit_buf, NULL, getuid (), SHADOW_AUDIT_FAILURE);
      #endif
     @@ src/newgrp.c: int main (int argc, char **argv)
    @@ src/newgrp.c: int main (int argc, char **argv)
      #ifdef WITH_AUDIT
     -  SNPRINTF(audit_buf, "changing new_gid=%lu", (unsigned long) gid);
     +  stprintf_a(audit_buf, "changing new_gid=%lu", (unsigned long) gid);
    -   audit_logger (AUDIT_CHGRP_ID, Prog,
    +   audit_logger (AUDIT_CHGRP_ID,
                      audit_buf, NULL, getuid (), SHADOW_AUDIT_SUCCESS);
      #endif
     
 6:  aeca9ceba =  6:  11b5a63e5 */: s/STRNCAT/strncat_a/
 7:  ceb5e52c1 =  7:  71ae7beea */: s/STRNCPY/strncpy_a/
 8:  0ae87fcdd =  8:  a3d64e43c */: s/STRTCPY/strtcpy_a/
 9:  b1568734a =  9:  3b60bce3a */: s/MEMZERO/memzero_a/
10:  39e8fc0a9 = 10:  45d4e66a8 */: s/STRFTIME/strftime_a/
11:  a79b30c7b = 11:  2457c84ff */: s/STRSEP2LS/strsep2ls_a/
12:  c90e954a6 = 12:  fcce0a175 */: s/STRSEP2ARR/strsep2arr_a/
13:  c58d8485c ! 13:  5c2c66521 */: s/DAY_TO_STR/day_to_str_a/
    @@ src/usermod.c: static void new_spent (struct spwd *spent, bool process_selinux)
     +          day_to_str_a(new_exp, user_newexpire);
     +          day_to_str_a(old_exp, user_expire);
      #ifdef WITH_AUDIT
    -           audit_logger (AUDIT_USER_MGMT, Prog,
    +           audit_logger (AUDIT_USER_MGMT,
                              "changing-expiration-date",
14:  b2b37f605 = 14:  d9a4eea56 */: s/STRNEQ/strneq_a/
15:  ba24deba4 = 15:  e97b7e712 lib/string/README: Document *_a() macros

This name better reflects that it handles arrays, and doesn't shout.

Signed-off-by: Alejandro Colomar <alx@kernel.org>
This name better reflects that it handles arrays, and doesn't shout.

Signed-off-by: Alejandro Colomar <alx@kernel.org>
This name better reflects that it handles arrays, and doesn't shout.

Signed-off-by: Alejandro Colomar <alx@kernel.org>
This name better reflects that it handles arrays, and doesn't shout.

Signed-off-by: Alejandro Colomar <alx@kernel.org>
This name better reflects that it handles arrays, and doesn't shout.

Signed-off-by: Alejandro Colomar <alx@kernel.org>
This name better reflects that it handles arrays, and doesn't shout.

Signed-off-by: Alejandro Colomar <alx@kernel.org>
This name better reflects that it handles arrays, and doesn't shout.

Signed-off-by: Alejandro Colomar <alx@kernel.org>
This name better reflects that it handles arrays, and doesn't shout.

Signed-off-by: Alejandro Colomar <alx@kernel.org>
This name better reflects that it handles arrays, and doesn't shout.

Signed-off-by: Alejandro Colomar <alx@kernel.org>
This name better reflects that it handles arrays, and doesn't shout.

Signed-off-by: Alejandro Colomar <alx@kernel.org>
This name better reflects that it handles arrays, and doesn't shout.

Signed-off-by: Alejandro Colomar <alx@kernel.org>
This name better reflects that it handles arrays, and doesn't shout.

This case is slightly different, as this macro does a little bit more
than just enforcing arrays.  It changes the return value too.  However,
that is related-enough to the handling of arrays that I'm inclined to
accept it as a minor inconsistency.

Signed-off-by: Alejandro Colomar <alx@kernel.org>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
@hallyn hallyn merged commit 4f52349 into shadow-maint:master Nov 28, 2025
11 checks passed
@alejandro-colomar alejandro-colomar self-assigned this Dec 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants