#527: octofussd propaga eventuali utenti con uid duplicato
---------------------------+------------------------------------------------
Reporter: piccardi | Owner: cgabriel
Type: defect | Status: new
Priority: high | Milestone:
Component: Fuss Launcher | Version:
Severity: critical | Keywords:
---------------------------+------------------------------------------------
Quando per un qualche motivo si ottiene un uid duplicato su più di un
utente (cosa si è verificata in seguito ad una immissione di massa andata
male a causa di un utente con la virgoletta singola nel nome), a tutti gli
utenti creati in seguito viene assegnato lo stesso uid, cosa che propaga
all'infinito il problema.
La causa è nella funzione _get_free_uidnumber, che contiene il seguente
codice:
uids.sort()
if len(uids) == 0:
return FIRSTUID
# Look for the first gap
last = uids[0]
for u in uids[1:]:
if u != last + 1:
return last + 1
last = u
# Else, return the maximum one plus 1
return uids[-1] + 1
ed e` chiaro che se ci sono due uid sono uguali, quando si arriva al
secondo la condizione u != last + 1 è vera perché u è uguale a last, e da
quel momento in poi si ottiene sempre last + 1.
La soluzione più semplice è lasciar perdere la ricerca del gap, cosa che
fanno anche tutti i comandi ordinari, ed eliminare tutto il codice che sta
fra i due commenti restituendo sempre il valore successivo all'uid
corrente di valore più elevato.
--
Ticket URL: <https://devel.fuss.bz.it/ticket/527>
FUSS <http://www.fuss.bz.it/>
Free Upgrade SouthTyrol's Schools