git: 5e21d7cd3119 - stable/14 - libjail: Guard against programmer error in jailparam_export()

From: Mark Johnston <markj_at_FreeBSD.org>
Date: Sun, 11 Feb 2024 15:15:37 UTC
The branch stable/14 has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=5e21d7cd31194faf8c2bdda2bc60adf34eaa405a

commit 5e21d7cd31194faf8c2bdda2bc60adf34eaa405a
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2024-02-04 02:22:09 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2024-02-11 15:14:59 +0000

    libjail: Guard against programmer error in jailparam_export()
    
    If the caller didn't use jailparam_import() to fetch the parameter
    value, an attempt to export it will trigger a segfault.  Make it a bit
    easier to figure out what's happening in this situation.
    
    PR:             276809
    Reviewed by:    jamie
    MFC after:      1 week
    Differential Revision:  https://reviews.freebsd.org/D43732
    
    (cherry picked from commit dfabf3efaa795e657f3858b7e2d0b11f8a51ecb5)
---
 lib/libjail/jail.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/lib/libjail/jail.c b/lib/libjail/jail.c
index 04fd6d3c4250..2af210ebb198 100644
--- a/lib/libjail/jail.c
+++ b/lib/libjail/jail.c
@@ -738,6 +738,12 @@ jailparam_export(struct jailparam *jp)
 	int i, nval, ival;
 	char valbuf[INET6_ADDRSTRLEN];
 
+	if (jp->jp_value == NULL) {
+		snprintf(jail_errmsg, JAIL_ERRMSGLEN,
+		    "parameter %s was not imported", jp->jp_name);
+		errno = EINVAL;
+		return (NULL);
+	}
 	if ((jp->jp_ctltype & CTLTYPE) == CTLTYPE_STRING) {
 		value = strdup(jp->jp_value);
 		if (value == NULL)