glibc + uid ?

Άγγελος Οικονομόπουλος aoiko at cc.ece.ntua.gr
Wed Aug 28 17:11:25 EEST 2002


On Wednesday 28 August 2002 00:52, Giorgos Keramidas wrote:
> On 2002-08-27 22:30 +0000, V13 wrote:
>
> > Mporei na moy eksigisei kapoios an ayto einai sfalma ths glibc h
> > kapoioy alloy?
>
> 
> Κάτι περίεργο παίζει εδώ.  Το header επιμένει ότι ο τύπος του δεύτερου
> και τρίτου argument είναι unsigned, αλλά στο kernel του FreeBSD
> (κοιτάζω το αρχείο vfs_syscalls.c τώρα[1]) είναι λίγο διαφορετικά
> δηλωμένα τα πράγματα:
> 
> 	/* ARGSUSED */
> 	int
> 	chown(td, uap)
> 		struct thread *td;
> 		register struct chown_args /* {
> 			syscallarg(char *) path;
> 			syscallarg(int) uid;
> 			syscallarg(int) gid;
> 		} */ *uap;
> 	{

<hollywood_a_i>
beep! comment alert. chown_args has been moved outside the function. 
erroneous y-p
</hollywood_a_i>

> 
> Προφανώς εδώ θα θεωρηθούν signed τα δυο τελευταία arguments, με ό,τι
> αυτό συνεπάγεται για τιμές που έχουν το sign-bit = 1.

ti periergo sunepagetai auto? (clue me)

arxika, h chown exei ta arguments opws do8hkan sto system call, xwris kamia 
plhroforia gia ton tupo tous, kai ta 8ewrei signed ints.
ta uid kai gid dinontai sthn setfown() (prin thn chown() sto idio file), h 
opoia ana8etei autes ths signed times sta .va_uid kai .va_gid pou einai 
unsigned. se auth thn ana8esh, oi ari8moi pou exoun to sign bit asso, 
ginontai megaloi akeraioi, kai ara den xa8hke tipota apo thn arxikh 
plhroforia.

an isxuei to parapanw, to erwthma einai giati na kaleitai h chown me signed 
args. mporw mono na fantastw oti otan egine h metatroph se 32bit uids 
kapoios apofasise na afhsei ena ainigma stis epomenes genies.

[snip]

> > Eno sto man ths chown(2) leei kathara:
> >
> > int chown(const char *path, uid_t owner, gid_t group);
> >
> >        If  the owner or group is specified as -1, then that ID is
> >        not changed.
>
> 
> Το manpage τον παίρνει ασύστολα.  Δεν επιτρέπεται να υπάρχουν μαγικές
> σταθερές, που κυκλοφορούν έτσι ξεκάρφωτες στα διάφορα sources.  Εδώ
> μάλλον εννοεί ότι μπορείς να περάσεις σαν argument μια τιμή που να
> έχει όλα τα bits = 1 (την οποία BTW *τυχαίνει* να χρησιμοποιεί το VFS
> layer του kernel στο FreeBSD σαν signed integer, και παίζει επειδή
> συμβαίνει να έχει την ίδια αναπαράσταση στη μνήμη το (signed)-1 με το
> (unsigned int)~0).   Φυσικά αν θέλουμε να είμαστε σωστοί σύμφωνα
> με το prototype της chown(), η μαγική τιμή θα είναι η ~0U.

an sou elega oti "sto spiti tou kremasmenou den milane gia skoini", 8a se 
ebaza se upopsies gia to ti grafei to manpage tou -stable h na prospa8hsw 
kai allo? :-)

-- 
indent does _not_ solve the problem of:
	* buggers who define a function with 42 arguments and body being
	return (foo == bar) ? TRUE : FALSE;

	- Alexander Viro on coding style




More information about the Linux-greek-users mailing list