[BusyBox 0000576]: inetd does not set argv[0]

bugs at busybox.net bugs at busybox.net
Fri Dec 16 07:40:53 UTC 2005


The following issue has been CLOSED 
====================================================================== 
http://busybox.net/bugs/view.php?id=576 
====================================================================== 
Reported By:                farnerup
Assigned To:                BusyBox
====================================================================== 
Project:                    BusyBox
Issue ID:                   576
Category:                   Networking Support
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     closed
Resolution:                 open
Fixed in Version:           
====================================================================== 
Date Submitted:             12-02-2005 07:55 PST
Last Modified:              12-15-2005 23:40 PST
====================================================================== 
Summary:                    inetd does not set argv[0]
Description: 
When inetd (1.01) calls a service handler it doesn't set argv[0], which
obviously makes e.g. busybox telnetd fail to work. Attaching a patch.
====================================================================== 

---------------------------------------------------------------------- 
 vodz - 12-05-05 08:19  
---------------------------------------------------------------------- 
No. Its special for wrappers and documented:

     The server program arguments should be just as arguments normally
are,
     starting with argv[0], which is the name of the program.

See manuals for BSD inetd(8)
 
Please close this bugreport. 

---------------------------------------------------------------------- 
 farnerup - 12-05-05 08:37  
---------------------------------------------------------------------- 
Well, yes, they should be, but the point is they aren't.
argv[0] is NULL. 

---------------------------------------------------------------------- 
 vodz - 12-05-05 10:07  
---------------------------------------------------------------------- 
>  Well, yes, they should be, but the point is they aren't. argv[0] is
NULL.

A trivail test from busybox tree:
$ echo "
2121  stream  tcp     nowait  `id -un`    `pwd`/busybox  ls
" > inetd_test.conf

$ ./busybox inetd inetd_test.conf

$ telnet localhost 2121
bin
etc
...

Its work. 

---------------------------------------------------------------------- 
 vodz - 12-05-05 10:11  
---------------------------------------------------------------------- 
>  Well, yes, they should be, but the point is they aren't. argv[0] is
NULL.

A trivail test from busybox tree:
$ echo "
2121  stream  tcp     nowait  `id -un`    `pwd`/busybox  ls
" > inetd_test.conf

$ ./busybox inetd inetd_test.conf

$ telnet localhost 2121
bin
etc
...

Its work. 

---------------------------------------------------------------------- 
 farnerup - 12-06-05 01:19  
---------------------------------------------------------------------- 
As I said, I am using busybox-1.01. The relevant code has changed in
busybox-1.1.0-pre1 and it is possible that the problem has been fixed.
However, in busybox-1.01/networking/inetd.c in the function
getconfigent():

	cp_ptr = strtok_r(NULL, " \t", &cp_ptr_ptr);

	// snip

	sep->se_server = inetd_strdup(cp_ptr);

	argc = 0;
	while ((cp_ptr = strtok_r(NULL, " \t", &cp_ptr_ptr)) != NULL) {
		if (argc < MAXARGV) {
			sep->se_argv[argc++] = inetd_strdup(cp_ptr);
		}
	}

Obviously, argv[0] is set to the first argument (if it exists), which
would normally be argv[1]. 

---------------------------------------------------------------------- 
 vodz - 12-06-05 02:13  
---------------------------------------------------------------------- 
> Obviously, argv[0] is set to the first argument (if it exists), which
would 
> normally be argv[1].

I don`t see problem in this code.
First argument used in exec(full_path_cmd, ...)
Second argument is argv[0] for exec(full_path_cmd, argv, NULL) and MUST
EXIST.
I again have recomended read manuals for BSD inetd(8). 

---------------------------------------------------------------------- 
 farnerup - 12-06-05 02:33  
---------------------------------------------------------------------- 
Ok, I get it. I'm sorry. 

Issue History 
Date Modified   Username       Field                    Change               
====================================================================== 
12-02-05 07:55  farnerup       New Issue                                    
12-02-05 07:56  farnerup       Status                   new => assigned     
12-02-05 07:56  farnerup       Assigned To               => BusyBox         
12-02-05 07:56  farnerup       File Added: inetd-argv0.patch                    
12-05-05 08:19  vodz           Note Added: 0000722                          
12-05-05 08:37  farnerup       Note Added: 0000723                          
12-05-05 10:08  vodz           Note Added: 0000725                          
12-05-05 10:11  vodz           Note Added: 0000726                          
12-06-05 01:19  farnerup       Note Added: 0000727                          
12-06-05 02:13  vodz           Note Added: 0000728                          
12-06-05 02:33  farnerup       Note Added: 0000729                          
12-15-05 23:40  landley        Status                   assigned => closed  
======================================================================




More information about the busybox-cvs mailing list