diff --git a/src/common.c b/src/common.c
index 2cbde93..9e9f037 100644
--- a/src/common.c
+++ b/src/common.c
@@ -65,8 +65,10 @@ int normalize_device_path(char *path, struct uboot_flash_env *dev)

        if ((normalized = realpath(path, NULL)) == NULL)
        {
-               /* device file didn't exist */
-               return -EINVAL;
+               /* device file does not exist */
+               normalized = malloc(PATH_MAX);
+               memset(normalized, 0, PATH_MAX);
+               strncpy(normalized, path, PATH_MAX - 1);
        }

        normalized_len = strlen(normalized);
@@ -184,8 +186,10 @@ int check_env_device(struct uboot_flash_env *dev)
        }

        ret = stat(dev->devname, &st);
-       if (ret < 0)
-               return -EBADF;
+       if (ret < 0) {
+               /* device is not readable, no further checks possible */
+               return 0;
+       }
        fd = open(dev->devname, O_RDONLY);
        if (fd < 0)
                return -EBADF;
