--- rpl/src/instructions_u2.c 2013/03/21 14:13:55 1.1 +++ rpl/src/instructions_u2.c 2019/02/03 14:41:20 1.26 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.13 - Copyright (C) 1989-2013 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.31 + Copyright (C) 1989-2019 Dr. BERTRAND Joël This file is part of RPL/2. @@ -19,7 +19,7 @@ ================================================================================ */ -#define DEBUG_ERREURS + #include "rpl-conv.h" @@ -92,6 +92,14 @@ instruction_uncompress(struct_processus { l_element_courant = (*s_objet_argument).objet; + if (l_element_courant == NULL) + { + liberation(s_etat_processus, s_objet_argument); + + (*s_etat_processus).erreur_execution = d_ex_argument_invalide; + return; + } + if ((*(*l_element_courant).donnee).type != INT) { liberation(s_etat_processus, s_objet_argument); @@ -100,6 +108,14 @@ instruction_uncompress(struct_processus return; } + if ((*((integer8 *) (*(*l_element_courant).donnee).objet)) < 0) + { + liberation(s_etat_processus, s_objet_argument); + + (*s_etat_processus).erreur_execution = d_ex_argument_invalide; + return; + } + taille = (uLong) (*((integer8 *) (*(*l_element_courant).donnee).objet)); l_element_courant = (*l_element_courant).suivant;