Re: unterschiedliche bind(2) Implementierung FreeBSD/Linux?

From: Matthias Teege <matthias-dbsdq(at)mteege.de>
Date: Sat, 08 Nov 2003 13:14:30 +0100

Jens Rehsack <rehsack(at)liwing.de> writes:

>> auf. Unter Linux funktioniert das aber ein strace unter BSD zeigt
>> mir
>> bind(0, {sa_family=AF_UNIX, path="dev/cg"}, 8)

> Hm, ist mir eigendlich ein Rätsel. Die Bibliotheksfunktion
> strncpy(3) müsste den String eigendlich komplett kopieren,

Ja, mir auch, zumal ich jetzt gerade noch festgestellt habe, dass
das Verhalten auch noch von sa_family abhängig ist. Damit das
Programm richtig arbeitet musste ich gerade folgenden Hack
produzieren:

        if (sa->sa_family=AF_INET) {
            if (-1 == bind (sockfd, sa, socksize))
                die2 ("bind");
        }
        else if (sa->sa_family=AF_UNIX)
        {
            if (-1 == bind (sockfd, sa, socksize+1))
                die2 ("bind");
        } else {

....

> bins(2) nachsehen. Müsste irgendwo unter /usr/src/lib/libc
> zu finden sein.

Ja, werde ich mal tun.

> Wahrscheinlich, weil das abschließende '\0' zu einem
> null terminierten String gehört.

Ja, aber das wären dann eben 8 und nicht 9 Byte.

Bis dann
Matthias

-- 
Matthias Teege -- http://www.mteege.de
make world not war
To Unsubscribe: send mail to majordomo.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sat 08 Nov 2003 - 13:15:24 CET

search this site