SPDX: Convert all of our single license tags to Linux Kernel style
[platform/kernel/u-boot.git] / cmd / itest.c
index 91ae5c2..fd6f416 100644 (file)
@@ -1,8 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * (C) Copyright 2003
  * Tait Electronics Limited, Christchurch, New Zealand
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 /*
@@ -59,19 +58,19 @@ static long evalexp(char *s, int w)
        if (s[0] == '*') {
                addr = simple_strtoul(&s[1], NULL, 16);
                buf = map_physmem(addr, w, MAP_WRBACK);
-               if (!buf) {
+               if (!buf && addr) {
                        puts("Failed to map physical memory\n");
                        return 0;
                }
                switch (w) {
                case 1:
-                       l = (long)(*(unsigned char *)buf);
+                       l = (long)(*(u8 *)buf);
                        break;
                case 2:
-                       l = (long)(*(unsigned short *)buf);
+                       l = (long)(*(u16 *)buf);
                        break;
                case 4:
-                       l = (long)(*(unsigned long *)buf);
+                       l = (long)(*(u32 *)buf);
                        break;
                }
                unmap_physmem(buf, w);
@@ -80,7 +79,8 @@ static long evalexp(char *s, int w)
                l = simple_strtoul(s, NULL, 16);
        }
 
-       return l & ((1UL << (w * 8)) - 1);
+       /* avoid overflow on mask calculus */
+       return (w >= sizeof(long)) ? l : (l & ((1UL << (w * 8)) - 1));
 }
 
 static char * evalstr(char *s)
@@ -100,7 +100,7 @@ static char * evalstr(char *s)
                        i++;
                }
                s[i] = 0;
-               return  getenv((const char *)&s[2]);
+               return  env_get((const char *)&s[2]);
        } else {
                return s;
        }