lib: errno: check for unsupported error number
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Tue, 15 Oct 2019 19:46:03 +0000 (21:46 +0200)
committerTom Rini <trini@konsulko.com>
Thu, 31 Oct 2019 11:22:53 +0000 (07:22 -0400)
If errno_str() is called with an unsupported error number, do not return a
random pointer but a reasonable text.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
lib/errno_str.c

index 0ba950e97030f4fdfbb2383f86ec29eed9a19a3b..bb8f9fbeb39a950fd5be0a5856774dd05bcbc4cf 100644 (file)
@@ -136,6 +136,8 @@ static const char * const errno_message[] = {
        ERRNO_MSG(EDQUOT, "Quota exceeded"),
        ERRNO_MSG(ENOMEDIUM, "No medium found"),
        ERRNO_MSG(EMEDIUMTYPE, "Wrong medium type"),
+       /* Message for unsupported error numbers */
+       ERRNO_MSG(0, "Unknown error"),
 };
 
 const char *errno_str(int errno)
@@ -143,5 +145,9 @@ const char *errno_str(int errno)
        if (errno >= 0)
                return errno_message[0];
 
-       return errno_message[abs(errno)];
+       errno = -errno;
+       if (errno >= ARRAY_SIZE(errno_message))
+               errno = ARRAY_SIZE(errno_message) - 1;
+
+       return errno_message[errno];
 }