pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: pkg/58717: wm/cde crashes in ttsession during startup on sparc64



The following reply was made to PR pkg/58717; it has been noted by GNATS.

From: Sad Clouds <cryintothebluesky%gmail.com@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: "Martin Husemann via gnats" <gnats-admin%NetBSD.org@localhost>,
 pkg-manager%netbsd.org@localhost, gnats-admin%netbsd.org@localhost, pkgsrc-bugs%netbsd.org@localhost
Subject: Re: pkg/58717: wm/cde crashes in ttsession during startup on
 sparc64
Date: Sat, 5 Oct 2024 13:12:40 +0100

 I think originally, many Unix systems used long integer for uid_t and
 gid_t, however this results in different size on LP64 systems. See
 https://docs.oracle.com/cd/E18752_01/html/816-5138/appendixa-1.html
 
 Ideally they should have used fixed width integers, but the original
 implementation probably predates that version of C standard. I'm not
 aware of any platforms using full 64-bits for uid_t and gid_t. So even
 if those are defined as 64-bit integers, they should always contain
 values <= UINT32_MAX. So casting this from 64-bit to 32-bit should be
 safe and should not result in data loss. Now if this assumption is
 wrong, then using sizeof() for each type would be a better solution.
 
 I'm not sure there is a standard definition for uid_t, gid_t and
 mode_t. So these could be defined as signed or unsigned. Also I'm not
 sure if there is a difference in behavior between xdr_int() and
 xdr_u_int(), but it feels that using the unsigned conversion is
 probably safer and may avoid sign extension bugs.
 


Home | Main Index | Thread Index | Old Index