agora inbox for [email protected]  
help / color / mirror / Atom feed
From: Japin Li <[email protected]>
Subject: [PATCH v2 2/2] Fix optind handling inconsistency in getopt_long() for missing argument
Date: Wed, 22 Jul 2026 11:59:41 +0800

In the long option error path for a missing required argument, the code
previously checked optstring[0] == ':' and returned BADARG immediately
without incrementing optind and setting place = EMSG.  This left optind
and place in an inconsistent state compared to the short option path,
where these updates are performed before the check and return.
---
 src/port/getopt_long.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/port/getopt_long.c b/src/port/getopt_long.c
index 20953db9db1..2e869fed58b 100644
--- a/src/port/getopt_long.c
+++ b/src/port/getopt_long.c
@@ -145,8 +145,12 @@ retry:
 						}
 						else
 						{
+							optind++;
 							if (optstring[0] == ':')
+							{
+								place = EMSG;
 								return BADARG;
+							}
 
 							if (opterr && has_arg == required_argument)
 								fprintf(stderr,
@@ -154,7 +158,6 @@ retry:
 										argv[0], place);
 
 							place = EMSG;
-							optind++;
 
 							if (has_arg == required_argument)
 								return BADCH;
-- 
2.53.0


--=-=-=--






view thread (85+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected]
  Subject: Re: [PATCH v2 2/2] Fix optind handling inconsistency in getopt_long() for missing argument
  In-Reply-To: <no-message-id-912878@localhost>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox