mirror of
https://github.com/systemd/systemd.git
synced 2025-03-24 14:50:17 +03:00
ata_id: Check for Compact Flash card
Automounters may need information like this to e.g. allow unprivileged applications to mount filesystems from a CF card but not from other ATA devices. See https://bugzilla.redhat.com/show_bug.cgi?id=734191 Signed-off-by: David Zeuthen <davidz@redhat.com>
This commit is contained in:
parent
4fd394c34b
commit
b93b46e4b7
@ -448,6 +448,7 @@ int main(int argc, char *argv[])
|
||||
struct udev *udev;
|
||||
struct hd_driveid id;
|
||||
uint8_t identify[512];
|
||||
uint16_t *identify_words;
|
||||
char model[41];
|
||||
char model_enc[256];
|
||||
char serial[21];
|
||||
@ -541,6 +542,7 @@ int main(int argc, char *argv[])
|
||||
goto close;
|
||||
}
|
||||
}
|
||||
identify_words = (uint16_t *) identify;
|
||||
|
||||
memcpy (model, id.model, 40);
|
||||
model[40] = '\0';
|
||||
@ -700,6 +702,15 @@ int main(int argc, char *argv[])
|
||||
/* ATA devices have no vendor extension */
|
||||
printf("ID_WWN_WITH_EXTENSION=0x%llx\n", (unsigned long long int) wwwn);
|
||||
}
|
||||
|
||||
/* from Linux's include/linux/ata.h */
|
||||
if (identify_words[0] == 0x848a || identify_words[0] == 0x844a) {
|
||||
printf("ID_ATA_CFA=1\n");
|
||||
} else {
|
||||
if ((identify_words[83] & 0xc004) == 0x4004) {
|
||||
printf("ID_ATA_CFA=1\n");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (serial[0] != '\0')
|
||||
printf("%s_%s\n", model, serial);
|
||||
|
Loading…
x
Reference in New Issue
Block a user