Skip to contentSkip to conversation

libblkid & empty identifier values

DISCUSSION Pali Rohár 2 participants 3 messages Jun 14, 2017 – Jun 15, 2017 Util-Linux package

lore
Share & tools
lore
#0 lore raw

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]
maintainer
#1 lore raw
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?

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
#2 lore raw
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]