> Vendor-specific (/usr/lib/systemd/system/*.[unit-type]) < System-specific override (/etc/systemd/system/*.[unit-type]) < System-specific drop-in (/etc/systemd/system/FOO.[unit-type].d/*, lexikografikus sorrendben).
Ha override-olsz egy unit-ot, az abban levők lesznek érvényesek. Ha drop-innel felülbírálsz, akkor minden direktívánál a legutolsó előfordulás (értelemszerűen, ami nincs drop-inben felülbírálva, ott az eredeti unit fájlban szereplő érték) szerepel.
A kérdésnek az volt a költői fele, a lényegi az volt, hogy amennyiben az adattípust egy külön direktívával adod meg, akkor mi gátol meg, hogy ugyanezt az override mechanizmust kövesd?
> Oks, és ha nincs getpwnam, akkor kimarad a teljes ág és az strtoul visszatérési értéke azonnal uid lesz (szevasz K&R-féle miazahibakezeléslol hozzáállás). Ami 0pointerre... uid=0 lesz.
> Ha gondolod, jelentsd náluk secu bugként, tied lehet a dicsőség a megtalálásáért, az oldalukon levő stable (5.8) verzióban még biztosan ott van.
A
system.c1437. sorától kezdődő
int netsnmp_str_to_uid()függvényre gondolsz?
int netsnmp_str_to_uid(const char *useroruid) {
int uid;
#if HAVE_GETPWNAM && HAVE_PWD_H
struct passwd *pwd;
#endif
uid = atoi(useroruid);
if (uid == 0) {
#if HAVE_GETPWNAM && HAVE_PWD_H
pwd = getpwnam(useroruid);
uid = pwd ? pwd->pw_uid : 0;
endpwent();
#endif
if (uid == 0)
snmp_log(LOG_WARNING, "Can't identify user (%s).\n", useroruid);
}
return uid;
}Ez a
0pointer-ra, amennyiben nincs
getpwnam, azt fogja csinálni, hogy kiszórja a logba, hogy
Can't identify user (0pointer).ugyanis, ha az uid=0 akkor az invalid, tehát ezt hiába jelenteném secu bugnak, mert nem az.
> Szerk.: sőt, rosszabb, ha nincs getpwnam, akkor _minden_ nem numerikus értékre 0 lesz, vagyis azt csinálja, amit fentebb a systemd-re láttatni akartál (root-ra fallbackel)...
Alámszerkesztettél, ld. feljebb, ez sosem fallbackel root-ra, mert az uid 0 invalid. Nem tűnik fel a commentben felette, hogy
* @return Either a user number > 0 or 0 if useroruid is not a valid user
* name, not a valid user number or the name of the root user.Keress rá a használatra:
snmpSSHDomain.c:957és
agentx_config.c:99; mind a két esetben le van kezelve, hogy uid=0: error.
Azonfelül, ez egy tool; most komolyan ezt akarjuk ráhúzni az egész UNIX világra, hogy egy tool-ban is így van?