error reporting in smbpasswd

Tavis Barr tavis at
Tue Oct 3 04:17:55 GMT 2000

This is really just a suggestion for whoever is maintaining smbpasswd (if 
such a designated person exists), everyone else can probably ignore.

Also, I've only checked smbpasswd.c through 2.0.7; if it has changed then 
you can also ignore this.

I recently was having problems with smbpasswd not working and reporting 
"out of memory" upon failing.  The problem in fact turned out to be the 
permissions on /dev/tty, which in turn caused the C library function 
getpass() to fail, which in turn caused smbpasswd to fail.

The problem is that there is sort of a generic failure point in the 
xstrdup() routine (in smbpasswd.c), which checks to make sure that the 
pointer it creates is non empty, and fails if it is empty, guessing 
that it is out of memory.  However, there are about five places where 
this routine is called, each of them could potentially pass a null 
argument to xstrdup() because something had already gone wrong, causing 
strdup() to report an out of memory error when the problem was something 
completely different.  

A few changes might be helpful:

*two error checks with an exit in getpass(), once after each password 
retrieval function, specifying which function call failed to return 

* In the two places where xstrdup() is called under the condition 
!user_name, it might be better to check for the existence of pwd->pwname 
and not just pwd.  

I'm sorry I don't have diffs but I don't know which CVS tree would be 
changed anyway.  If you feel these are stupid suggestions feel free to 
ignore them.  I'm only making them because I had to spend several hours 
going through the source to figure out the cause of an error that might 
have only taken a few minutes to diagnose with a more accurate error 



Tavis Barr                           ,-~~-.___.        
Senior Systems Coordinator          / |  '     \             
Institute for Social and Economic  (  )        0               
   Theory and Research              \_/-, ,----'            
509D Int'l Affairs Bldg                ====           //                    
Columbia University                   /  \-'~;    /~~~(O)
212-854-9076                         /  __/~|   /       |    
tavis at     =(  _____| (_________|


More information about the samba-technical mailing list