Jak ktoś zainteresowany w czym konkretnie dłubię

Popatrzmy na te dwie funkcje: setresuid(0, -1, -1) i setreuid(0, -1). Obie odpalamy z roota i obie powinny nam ustawić real uid i effective uid na 0 (-1 w argumencie oznacza, żeby daną wartość zostawić na takiej, jaka była, a jesteśmy na roocie). Teraz popatrzmy jaki będzie skutek odpalenia tej pierwszej funkcji w programiku na alphie na popsutym glibcu (sprawdzamy przy pomocy printf("%d %d\n", getuid(), geteuid());):
[root@fly tests]# ./a.out
0 0

Wszystko ok? Ano. No to teraz sprawdzamy drugą funkcję:
[root@fly tests]# ./a.out
0 -1

I co widzimy? Rzecz właściwie rzecz biorąc niemożliwą - effective uid ustawiony na -1 mimo, że każda funkcja służąca do zmiany tegoż po otrzymaniu wartości -1 powinna była zareagować w specjalny sposób, a nie ślepo ustawić wartość. Znaczy ktoś tak zamieszał z tymi funkcjami, że na alphie jedna jest wadliwa (resztę posprawdzałem - są najwyraźniej ok). Na dodatek oto jak wygląda strace (i to niezależnie od tego, jakiego glibca używam, tego popsutego, czy tego działającego):
setreuid(0, 4294967295)                 = 0

Nie wiem skąd strace bierze informacje o typach, ale najwyraźniej istnieje możliwość, że błąd z typami przy używaniu tej funkcji na alphie jest zdecydowanie starszy, a przez niedawne grzebanie przy owych funkcjach po prostu się ujawnił.

Hehe. Instalacja dbusa na builderach spowodowała zmasakrowanie ~700 pakietów w Ac :)

A ja wysłałem maila do głównodowodzącej grupy .net z propozycją prelekcji o interakcjach standardowego modelu rozwijania oprogramowania z modelem open source. Zobaczymy co ona na to.

  1. 1. nbw

    standardowy model = "komercyjny"?
    Chodzi mi ostatnio po głowie podobny projekt...

Adde commentarium: (textile lite)