do not use %n in snprintf()

This commit is contained in:
robert 2021-09-06 10:59:24 +00:00
parent 784f32dcb1
commit 288d3e7120
2 changed files with 34 additions and 1 deletions

View File

@ -1,4 +1,4 @@
# $OpenBSD: Makefile,v 1.10 2020/07/25 09:47:59 robert Exp $
# $OpenBSD: Makefile,v 1.11 2021/09/06 10:59:24 robert Exp $
COMMENT= Pluggable Authentication Module
@ -6,6 +6,8 @@ V= 20200510
DISTNAME= freebsd_pam-${V}
PKGNAME= openpam-${V}
REVISION= 0
CATEGORIES= security
SHARED_LIBS+= pam 6.0

View File

@ -0,0 +1,31 @@
$OpenBSD: patch-openpam_lib_libpam_openpam_dynamic_c,v 1.1 2021/09/06 10:59:24 robert Exp $
Don't use printf %n.
Index: openpam/lib/libpam/openpam_dynamic.c
--- openpam/lib/libpam/openpam_dynamic.c.orig
+++ openpam/lib/libpam/openpam_dynamic.c
@@ -229,14 +229,17 @@ openpam_dynamic(const char *modname)
* note of where the suffix begins so we can cut it off later.
*/
if (has_ver)
- len = snprintf(modpath, sizeof modpath, "%s/%s%n",
- *path, modname, &dot);
+ len = snprintf(modpath, sizeof modpath, "%s/%s",
+ *path, modname);
+ }
else if (has_so)
- len = snprintf(modpath, sizeof modpath, "%s/%s%n.%d",
- *path, modname, &dot, LIB_MAJ);
+ len = snprintf(modpath, sizeof modpath, "%s/%s.%d",
+ *path, modname, LIB_MAJ);
else
- len = snprintf(modpath, sizeof modpath, "%s/%s%s%n.%d",
- *path, modname, PAM_SOEXT, &dot, LIB_MAJ);
+ len = snprintf(modpath, sizeof modpath, "%s/%s%s.%d",
+ *path, modname, PAM_SOEXT, LIB_MAJ);
+ if (!has_ver)
+ dot = strrchr(modpath, '.') - modpath;
/* check for overflow */
if (len < 0 || (unsigned int)len >= sizeof modpath) {
errno = ENOENT;