return 0;
}
+static int get_file_type(const char *path, const char *search_type)
+{
+ int err, dts = 0, i;
+ struct stat st;
+
+ for (i = 0; search_type[i]; i++) {
+ switch (search_type[i]) {
+ case 'f':
+ dts |= REG_MASK; break;
+ case 'd':
+ dts |= DIR_MASK; break;
+ case 's':
+ dts |= BLK_MASK | CHR_MASK | LNK_MASK; break;
+ case 'm':
+ /* stay within the same filesystem*/
+ err = lstat(path, &st);
+ if (err < 0) {
+ log_err("stat() failed\n");
+ return err;
+ }
+ fs_dev = st.st_dev; /* filesystem to start from */
+ break;
+ }
+ }
+
+ return dts;
+}
+
static int cmd_sign_ima(struct command *cmd)
{
char *key, *file = g_argv[optind++];
{
char *path = g_argv[optind++];
int err, dts = REG_MASK; /* only regular files by default */
- struct stat st;
if (!path) {
log_err("Parameters missing\n");
if (recursive) {
if (de_type) {
- int i;
-
- dts = 0;
- for (i = 0; de_type[i]; i++) {
- switch (de_type[i]) {
- case 'f':
- dts |= REG_MASK; break;
- case 'd':
- dts |= DIR_MASK; break;
- case 's':
- dts |= BLK_MASK | CHR_MASK | LNK_MASK; break;
- case 'm':
- /* stay within the same filesystem*/
- err = lstat(path, &st);
- if (err < 0) {
- log_err("stat() failed\n");
- return err;
- }
- fs_dev = st.st_dev; /* filesystem to start from */
- break;
- }
- }
+ dts = get_file_type(path, de_type);
+ if (dts < 0)
+ return dts;
}
-
err = find(path, dts, sign_evm_path);
} else {
err = sign_evm_path(path);