OSDN Git Service

linux-user: fix signal number range check
authorAndreas Schwab <schwab@linux-m68k.org>
Tue, 2 Jul 2013 13:04:12 +0000 (14:04 +0100)
committerRiku Voipio <riku.voipio@linaro.org>
Fri, 5 Jul 2013 12:45:40 +0000 (15:45 +0300)
When translating between host and target signal numbers keep negative
numbers unchanged, avoiding access beyond array bounds.

Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 878v2b8sek.fsf@igel.home

linux-user/signal.c

index c4e20dc..d84e189 100644 (file)
@@ -102,14 +102,14 @@ static inline int sas_ss_flags(unsigned long sp)
 
 int host_to_target_signal(int sig)
 {
-    if (sig >= _NSIG)
+    if (sig < 0 || sig >= _NSIG)
         return sig;
     return host_to_target_signal_table[sig];
 }
 
 int target_to_host_signal(int sig)
 {
-    if (sig >= _NSIG)
+    if (sig < 0 || sig >= _NSIG)
         return sig;
     return target_to_host_signal_table[sig];
 }