Module Name: src Committed By: mlelstv Date: Sat May 23 09:18:01 UTC 2015
Modified Files: src/lib/libc/gen: utmpx.c Log Message: strvisx is used here to encode binary data, but the encoding depends on locale settings and the result might not be accepted or even misinterpreted by the strunvis decoder. As a workaround encode manually as a string of octal numbers. strvisx should learn how enforce such an encoding by itself. To generate a diff of this commit: cvs rdiff -u -r1.33 -r1.34 src/lib/libc/gen/utmpx.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libc/gen/utmpx.c diff -u src/lib/libc/gen/utmpx.c:1.33 src/lib/libc/gen/utmpx.c:1.34 --- src/lib/libc/gen/utmpx.c:1.33 Thu Feb 5 16:00:39 2015 +++ src/lib/libc/gen/utmpx.c Sat May 23 09:18:01 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: utmpx.c,v 1.33 2015/02/05 16:00:39 christos Exp $ */ +/* $NetBSD: utmpx.c,v 1.34 2015/05/23 09:18:01 mlelstv Exp $ */ /*- * Copyright (c) 2002 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include <sys/cdefs.h> #if defined(LIBC_SCCS) && !defined(lint) -__RCSID("$NetBSD: utmpx.c,v 1.33 2015/02/05 16:00:39 christos Exp $"); +__RCSID("$NetBSD: utmpx.c,v 1.34 2015/05/23 09:18:01 mlelstv Exp $"); #endif /* LIBC_SCCS and not lint */ #include "namespace.h" @@ -308,11 +308,12 @@ utmp_update(const struct utmpx *utx) char buf[sizeof(*utx) * 4 + 1]; pid_t pid; int status; + unsigned i; _DIAGASSERT(utx != NULL); - (void)strvisx(buf, (const char *)(const void *)utx, sizeof(*utx), - VIS_WHITE); + for (i=0; i<sizeof(*utx); ++i) + sprintf(&buf[4*i],"\\%03o",((const char*)utx)[i]); switch (pid = fork()) { case 0: (void)execl(_PATH_UTMP_UPDATE,