From e8e4196da2da2e534f3b08066d55acd100dda1fd Mon Sep 17 00:00:00 2001 From: stefan schippers Date: Wed, 3 Jul 2024 08:39:56 +0200 Subject: [PATCH] sym_vs_sch_pins(): check for not NULL pin_dir to avoid crash, as per Tim Edwards findings --- src/netlist.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/netlist.c b/src/netlist.c index f3267df7..de0fff73 100644 --- a/src/netlist.c +++ b/src/netlist.c @@ -1749,8 +1749,19 @@ int sym_vs_sch_pins(int all) my_strdup(_ALLOC_ID_, &pin_name, expandlabel(get_tok_value(xctx->sym[i].rect[PINLAYER][j].prop_ptr, "name", 0), &mult)); my_strdup(_ALLOC_ID_, &pin_dir, get_tok_value(xctx->sym[i].rect[PINLAYER][j].prop_ptr, "dir", 0)); + + if( pin_name && !strcmp(pin_name, lab)) { - if(!( + if(!pin_dir) { + char str[2048]; + my_snprintf(str, S(str), "Error: Symbol %s: No direction given for pin %s", + xctx->sym[i].name, lab); + statusmsg(str,2); + my_snprintf(str, S(str), " %s <--> ???", type); + statusmsg(str,2); + err |= 1; + } + else if(!( ( !strcmp(type, "ipin") && !strcmp(pin_dir, "in") ) || ( !strcmp(type, "opin") && !strcmp(pin_dir, "out") ) || ( !strcmp(type, "iopin") && !strcmp(pin_dir, "inout") )