From: Ronnie Sahlberg Date: Thu, 30 Jan 2025 03:27:38 +0000 (+1000) Subject: options.c: Fix segv if poptGetContext returns NULL X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c2db9218902c12d303ccd0d26c62d7e27de85712;p=thirdparty%2Frsync.git options.c: Fix segv if poptGetContext returns NULL If poptGetContext returns NULL, perhaps due to OOM, a NULL pointer is passed into poptReadDefaultConfig() which in turns SEGVs when trying to dereference it. This was found using https://github.com/sahlberg/malloc-fail-tester.git $ ./test_malloc_failure.sh rsync -Pav crash crosh Signed-off-by: Ronnie Sahlberg --- diff --git a/options.c b/options.c index 55aef66c..74b39bf6 100644 --- a/options.c +++ b/options.c @@ -1372,6 +1372,10 @@ int parse_arguments(int *argc_p, const char ***argv_p) /* TODO: Call poptReadDefaultConfig; handle errors. */ pc = poptGetContext(RSYNC_NAME, argc, argv, long_options, 0); + if (pc == NULL) { + strlcpy(err_buf, "poptGetContext returned NULL\n", sizeof err_buf); + return 0; + } if (!am_server) { poptReadDefaultConfig(pc, 0); popt_unalias(pc, "--daemon");