libblkid & empty identifier values
Hello!
Technically UDF filesystem allows to store empty string values. LogicalVolumeIdentifier (label) according to UDF specification shall not be null, but it is possible to store empty string there.
Question is, what should libblkid's udf code do if e.g. LABEL identifier is empty string? Should it set empty LABEL for libblkid? Or it should not set LABEL at all?
Currently in blkid_probe_set_label() is check for len > 1, so empty string is not possible to store for LABEL. But when check fails function return non-negative value which is understood as succeeded -- even it did not store empty string. It does not looks good... Or it is expected?
Signature · 2 lines
Pali Rohár [email protected]
Karel Zak
maintainerQuoted 6 lines · Pali Rohár
Hello!
Technically UDF filesystem allows to store empty string values. LogicalVolumeIdentifier (label) according to UDF specification shall not be null, but it is possible to store empty string there.
Quoted 8 lines
Question is, what should libblkid's udf code do if e.g. LABEL identifier is empty string? Should it set empty LABEL for libblkid? Or it should not set LABEL at all?
Currently in
blkid_probe_set_label()is check for len > 1, so empty string is not possible to store for LABEL. But when check fails function return non-negative value which is understood as succeeded -- even it did not store empty string. It does not looks good... Or it is expected?
IMHO think it's expected, blkid_probe_set_label() hides all the logic to keep probing functions simple. So, LABEL is optional and libblkid should not return any error if FS does not define any LABEL. The empty string as label is unwanted and unexpected by library clients.
Karel
Signature · 2 lines
Karel Zak <[email protected]> http://karelzak.blogspot.com
Quoted 16 lines · On Thursday 15 June 2017 09:52:44 Karel Zak wrote:
Quoted 6 lines · Pali Rohár
Hello!
Technically UDF filesystem allows to store empty string values. LogicalVolumeIdentifier (label) according to UDF specification shall not be null, but it is possible to store empty string there.
Quoted 8 lines
Question is, what should libblkid's udf code do if e.g. LABEL identifier is empty string? Should it set empty LABEL for libblkid? Or it should not set LABEL at all?
Currently in
blkid_probe_set_label()is check for len > 1, so empty string is not possible to store for LABEL. But when check fails function return non-negative value which is understood as succeeded -- even it did not store empty string. It does not looks good... Or it is expected?
Quoted 4 lines
IMHO think it's expected,
blkid_probe_set_label()hides all the logic to keep probing functions simple. So, LABEL is optional and libblkid should not return any error if FS does not define any LABEL. The empty string as label is unwanted and unexpected by library clients.
Ok, in this case special logic for parsing empty UDF dstring identifiers is not needed as they would be just ignored by libblkid (empty dstrings are stored specially).
Signature · 2 lines
Pali Rohár [email protected]