From eb7217f8ecdbe797f8cc455e0484af545df89ee3 Mon Sep 17 00:00:00 2001 From: Renaud Fivet Date: Wed, 18 Mar 2015 12:27:55 +0800 Subject: [PATCH] Fix CID 39910: &rnd 0 return a pseudo-random number instead of triggering a zero divide crash. --- eval.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/eval.c b/eval.c index 81de494..f5f98ca 100644 --- a/eval.c +++ b/eval.c @@ -546,7 +546,13 @@ static char *gtfun( char *fname) { retstr = result ; break ; case UFRND: - retstr = i_to_a( (ernd() % abs( atoi( argx))) + 1) ; + sz = abs( atoi( argx)) ; + if( sz == 0) + sz = ernd() ; + else + sz = ernd() % sz + 1 ; + + retstr = i_to_a( sz) ; break ; case UFABS: retstr = i_to_a( abs( atoi( argx))) ;