Require quotes when searching for blkid keys.

In combination with a blkid change, this prevents the parsing logic
from getting confused by key names appearing inside values.  (The
blkid change suppresses any quotes that appear inside values.)

Bug: 80436257
Test: manual
Change-Id: I9480ef6eb78254b812c671950875d0b8918a27c6
gugelfrei
Jeff Sharkey 6 years ago committed by Jeff Sharkey
parent eddf9bd63c
commit ee5c7318d7

@ -189,17 +189,17 @@ static status_t readMetadata(const std::string& path, std::string& fsType,
for (auto line : output) { for (auto line : output) {
// Extract values from blkid output, if defined // Extract values from blkid output, if defined
const char* cline = line.c_str(); const char* cline = line.c_str();
char* start = strstr(cline, "TYPE="); char* start = strstr(cline, "TYPE=\"");
if (start != nullptr && sscanf(start + 5, "\"%127[^\"]\"", value) == 1) { if (start != nullptr && sscanf(start + 5, "\"%127[^\"]\"", value) == 1) {
fsType = value; fsType = value;
} }
start = strstr(cline, "UUID="); start = strstr(cline, "UUID=\"");
if (start != nullptr && sscanf(start + 5, "\"%127[^\"]\"", value) == 1) { if (start != nullptr && sscanf(start + 5, "\"%127[^\"]\"", value) == 1) {
fsUuid = value; fsUuid = value;
} }
start = strstr(cline, "LABEL="); start = strstr(cline, "LABEL=\"");
if (start != nullptr && sscanf(start + 6, "\"%127[^\"]\"", value) == 1) { if (start != nullptr && sscanf(start + 6, "\"%127[^\"]\"", value) == 1) {
fsLabel = value; fsLabel = value;
} }

Loading…
Cancel
Save