From e9eed90c39e0711014666311aeac7762f92cd150 Mon Sep 17 00:00:00 2001 From: Allan Jude Date: Fri, 24 Jul 2015 20:20:59 +0000 Subject: [PATCH] Cast uid and gid to the correct type for display to solve segfault in ls(1) on 32bit arches Correctly escape literal % for display This fixes segfaults in 32bit arches caused by r285734 Reviewed by: ngie Approved by: dim Sponsored by: ScaleEngine Inc. Differential Revision: https://reviews.freebsd.org/D3191 --- bin/ls/print.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/ls/print.c b/bin/ls/print.c index 2fbaea5305c9..70f53ba70663 100644 --- a/bin/ls/print.c +++ b/bin/ls/print.c @@ -192,7 +192,7 @@ printlong(const DISPLAY *dp) if (f_numericonly) { xo_emit("{t:mode/%s}{e:mode_octal/%03o} {t:links/%*u} {td:user/%-*s}{e:user/%ju} {td:group/%-*s}{e:group/%ju} ", buf, (int) sp->st_mode & ALLPERMS, dp->s_nlink, sp->st_nlink, - dp->s_user, np->user, sp->st_uid, dp->s_group, np->group, sp->st_gid); + dp->s_user, np->user, (uintmax_t)sp->st_uid, dp->s_group, np->group, (uintmax_t)sp->st_gid); } else { xo_emit("{t:mode/%s}{e:mode_octal/%03o} {t:links/%*u} {t:user/%-*s} {t:group/%-*s} ", buf, (int) sp->st_mode & ALLPERMS, dp->s_nlink, sp->st_nlink, @@ -486,7 +486,7 @@ printtype(u_int mode) xo_emit("{D:=}{e:type/socket}"); return (1); case S_IFWHT: - xo_emit("{D:%}{e:type/whiteout}"); + xo_emit("{D:%%}{e:type/whiteout}"); return (1); default: break;