Is samba 64bit safe ? (PR#19852)

David Collier-Brown davecb at canada.sun.com
Fri Aug 27 13:34:43 GMT 1999


Darren Reed wrote:
> I added -Xc to the command line for SUNWspro/cc and found that
> it also complained about integer/pointer problems for strdup(),
> mktemp() and setting sa_handler at the top of CatchSignal() in
> lib/signal.h.  On Solaris7 (at least), sa_handler is
> void (* _handler)().

	The mismatches are a fruitful area to investigate:
	I looked at the assembler, and, to oversimplify,
	if a pointer return value is misdeclared int && 
	used immediately, it will still be in a register 
	and the compiler will pass it untruncated.

	If it isn't used immediately, it will have it's lower
	half stored and used... and all bets about correctness
	are off!

	Specifically, strcmp(crypt("12345678", "12"),"fred")
	looked like this:

        sethi   %hh(.L90),%l1			-- setup args for
        sethi   %lm(.L90),%g1			-- both strcmp 
        or      %l1,%hm(.L90),%l1		-- and crypt
        or      %g1,%lo(.L90),%g1
        sllx    %l1,32,%l1
        or      %l1,%g1,%l1
        add     %l1,16,%o1

        call    crypt
        mov     %l1,%o0				-- return value is
						-- already in reg
						-- so just move it
        call    strcmp
	add     %l1,24,%o1
        mov     %o0,%l1
        st      %l1,[%fp+2039]			-- store return from
						-- strcmp


> These warnings also cropped up:
> "smbd/nttrans.c", line 2009: warning: integer overflow detected: op "<<"
> which sounds, to me, like missing L's or UL's on the end of numerical
> constants in #define's.  Checking <include/smb.h> showed this to be
> the case - some of the #define's are for (1L<<x) and some are just
> (1<<x).

> Adding in extra prototypes for strdup() and mktemp() to one of the .h
> files appears to have fixed the problem of smbd core dumping on
> Solaris7 when compiled as a 64bit binary (using -xarch=v9) with
> SUNWspro 5.0's cc. 

	Excellent!  Relieves my mind.
	Of course, this doesn't explain why crypt failed in
	my case, but that's a question for the Sun cc folks, 
	not us.

--dave
-- 
David Collier-Brown,  | Always do right. This will gratify some people
185 Ellerslie Ave.,   | and astonish the rest.        -- Mark Twain
Willowdale, Ontario   | http://java.science.yorku.ca/~davecb
Work: (905) 415-2849 Home: (416) 223-8968 Email: davecb at canada.sun.com


More information about the samba-technical mailing list