#include "path-util.h"
#include "strv.h"
#include "ask-password-api.h"
-#include "def.h"
-#include "libudev.h"
-#include "udev-util.h"
+#include "sd-device.h"
+#include "device-util.h"
static const char *arg_type = NULL; /* CRYPT_LUKS1, CRYPT_TCRYPT or CRYPT_PLAIN */
static char *arg_cipher = NULL;
"ID_MODEL_FROM_DATABASE\0"
"ID_MODEL\0";
- _cleanup_udev_unref_ struct udev *udev = NULL;
- _cleanup_udev_device_unref_ struct udev_device *device = NULL;
+ _cleanup_device_unref_ sd_device *device = NULL;
struct stat st;
const char *i;
+ int r;
assert(path);
if (!S_ISBLK(st.st_mode))
return NULL;
- udev = udev_new();
- if (!udev)
- return NULL;
-
- device = udev_device_new_from_devnum(udev, 'b', st.st_rdev);
- if (!device)
+ r = sd_device_new_from_devnum(&device, 'b', st.st_rdev);
+ if (r < 0)
return NULL;
NULSTR_FOREACH(i, name_fields) {
const char *name;
- name = udev_device_get_property_value(device, i);
- if (!isempty(name))
+ r = sd_device_get_property_value(device, i, &name);
+ if (r >= 0 && !isempty(name))
return strdup(name);
}
if (!escaped_name)
return log_oom();
- id = strappenda("cryptsetup:", escaped_name);
+ id = strjoina("cryptsetup:", escaped_name);
r = ask_password_auto(text, "drive-harddisk", id, until, accept_cached, passwords);
if (r < 0)
if (asprintf(&text, "Please enter passphrase for disk %s! (verification)", name) < 0)
return log_oom();
- id = strappenda("cryptsetup-verification:", escaped_name);
+ id = strjoina("cryptsetup-verification:", escaped_name);
r = ask_password_auto(text, "drive-harddisk", id, until, false, &passwords2);
if (r < 0)
/* Ideally we'd do this on the open fd, but since this is just a
* warning it's OK to do this in two steps. */
- if (stat(key_file, &st) >= 0 && (st.st_mode & 0005)) {
- if(!STR_IN_SET(key_file, "/dev/urandom", "/dev/random", "/dev/hw_random"))
- log_warning("Key file %s is world-readable. This is not a good idea!", key_file);
- }
+ if (stat(key_file, &st) >= 0 && S_ISREG(st.st_mode) && (st.st_mode & 0005))
+ log_warning("Key file %s is world-readable. This is not a good idea!", key_file);
}
for (tries = 0; arg_tries == 0 || tries < arg_tries; tries++) {