calibre-mount-helper: Refuse to mount non block devices

This commit is contained in:
Kovid Goyal 2011-11-04 08:39:02 +05:30
parent b581b47ff1
commit c940cb2cb6

View File

@ -238,6 +238,7 @@ int cleanup(const char *dev, const char *mp) {
void check_dev(const char *dev) { void check_dev(const char *dev) {
char buffer[PATH_MAX+1]; char buffer[PATH_MAX+1];
struct stat file_info;
if (dev == NULL || strlen(dev) < strlen(DEV)) { if (dev == NULL || strlen(dev) < strlen(DEV)) {
fprintf(stderr, "Invalid arguments\n"); fprintf(stderr, "Invalid arguments\n");
@ -253,6 +254,16 @@ void check_dev(const char*dev) {
fprintf(stderr, "Trying to operate on a dev node not under /dev\n"); fprintf(stderr, "Trying to operate on a dev node not under /dev\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
if (stat(dev, &file_info) != 0) {
fprintf(stderr, "stat call on dev node failed\n");
exit(EXIT_FAILURE);
}
if (!S_ISBLK(file_info.st_mode)) {
fprintf(stderr, "dev node is not a block device\n");
exit(EXIT_FAILURE);
}
} }
int main(int argc, char** argv) int main(int argc, char** argv)