#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
Ciao Christopher,
oggi ho aggiornato alcuni pc e è presente il nuovo pacchetto di
octofuss-client. In fase di installazione compare il seguente problema:
> ---------------------
> Configurazione di octofuss-client (2.0.8-1fuss1)...
> Traceback (most recent call last):
> File "/usr/lib/python2.6/dist-packages/twisted/application/app.py", line
> 693, in run
> runApp(config)
> File "/usr/lib/python2.6/dist-packages/twisted/scripts/twistd.py", line
> 23, in runApp
> _SomeApplicationRunner(config).run()
> File "/usr/lib/python2.6/dist-packages/twisted/application/app.py", line
> 411, in run
> self.application = self.createOrGetApplication()
> File "/usr/lib/python2.6/dist-packages/twisted/application/app.py", line
> 494, in createOrGetApplication
> application = getApplication(self.config, passphrase)
> --- <exception caught here> ---
> File "/usr/lib/python2.6/dist-packages/twisted/application/app.py", line
> 505, in getApplication
> application = service.loadApplication(filename, style, passphrase)
> File "/usr/lib/python2.6/dist-packages/twisted/application/service.py",
> line 390, in loadApplication
> application = sob.loadValueFromFile(filename, 'application',
> passphrase)
> File "/usr/lib/python2.6/dist-packages/twisted/persisted/sob.py", line
> 210, in loadValueFromFile
> exec fileObj in d, d
> File "/usr/sbin/octofuss-client", line 16, in <module>
> from octofussclient import OctofussClient
> exceptions.ImportError: No module named octofussclient
>
> Failed to load application: No module named octofussclient
> -----------------------
Mi sembra che poi tutto funzioni regolarmente, ma se tu dai una
controllata e confermi mi sento più tranquillo
Ciao
Stefano