Sicherheit: report/screen maskieren Shell-Eingaben, Sperren privat und atomar
report setzt Zellwerte in <!befehl!> maskiert ein, screen verlangt gültige Variablennamen, lock/unlock nutzen /tmp/rdb-locks-<UID> mit flock, vilock sperrt per Hardlink. EDITOR darf Argumente haben. Doku und Tests ergänzt.
This commit is contained in:
@@ -245,6 +245,14 @@ er nicht mehr passt (außer mit `-a`). Beide halten die Indizes aktuell.
|
||||
- Die Indexdateien sind dem Original nachgebaut, aber nicht gleich (Handbuch S. 103–108):
|
||||
die Hashtabelle `.h` hat 2n statt 2n+1 Plätze, und in `.i` steht der Schlüssel vor
|
||||
dem Offset statt dahinter. Alte /rdb-Indizes muss man neu bauen.
|
||||
- `lock`/`unlock` legen ihre Sperrdateien in `/tmp/rdb-locks-<UID>/` ab (Modus 0700, `flock`),
|
||||
nicht als `/tmp/L<Tabelle>` wie in den Man-Pages. Eine Sperre eines abgestürzten Prozesses
|
||||
wird nicht erkannt; `unlock` hebt sie auf.
|
||||
- `vilock` sperrt atomar über einen Hardlink; `EDITOR` darf Argumente haben (`nvim -f`).
|
||||
Nach `kill -9` bleibt `LOCK<Tabelle>` liegen und muss von Hand zurückbenannt werden.
|
||||
- `report`: Spaltenwerte in `<!befehl <Spalte>!>` werden für die Shell maskiert und kommen
|
||||
als ein Wort an; nicht in Anführungszeichen setzen. `screen` verlangt Spaltennamen, die
|
||||
gültige Shell-Variablennamen sind (Buchstaben, Ziffern, `_`).
|
||||
- `sorttable` lässt Zeilen mit gleichem Schlüssel in ihrer Reihenfolge; das Original
|
||||
ordnet sie nach der ganzen Zeile, wie `sort` (Handbuch S. 94).
|
||||
- `subtotal` schreibt bei einer Summe von null ein leeres Feld; das Handbuch zeigt
|
||||
|
||||
Reference in New Issue
Block a user