Merge Richard Cohen's 'guard-against-null-dereference' into master.

This commit is contained in:
John Ralls 2023-03-10 12:48:51 -08:00
commit 35dd8dbf06
7 changed files with 22 additions and 7 deletions

View File

@ -121,7 +121,7 @@ gnc_kvp_value_ptr_to_scm(KvpValue* val)
case KvpValue::Type::GUID: case KvpValue::Type::GUID:
{ {
auto tempguid = val->get<GncGUID*>(); auto tempguid = val->get<GncGUID*>();
return gnc_guid2scm(*tempguid); return tempguid ? gnc_guid2scm(*tempguid) : SCM_BOOL_F;
} }
break; break;
case KvpValue::Type::FRAME: case KvpValue::Type::FRAME:
@ -133,7 +133,7 @@ gnc_kvp_value_ptr_to_scm(KvpValue* val)
auto val_scm { gnc_kvp_value_ptr_to_scm (iter.second) }; auto val_scm { gnc_kvp_value_ptr_to_scm (iter.second) };
return scm_acons (key_scm, val_scm, rv); return scm_acons (key_scm, val_scm, rv);
}; };
return scm_reverse (std::accumulate (frame->begin(), frame->end(), SCM_EOL, acc)); return frame ? scm_reverse (std::accumulate (frame->begin(), frame->end(), SCM_EOL, acc)) : SCM_BOOL_F;
} }
break; break;
case KvpValue::Type::GLIST: case KvpValue::Type::GLIST:

View File

@ -230,7 +230,9 @@ editable_enters (GNCSearchCoreType *fe)
void void
gnc_search_core_register_type (const char *type_name, GNCSearchCoreNew fcn) gnc_search_core_register_type (const char *type_name, GNCSearchCoreNew fcn)
{ {
g_return_if_fail (type_name || *type_name || fcn); g_return_if_fail (type_name);
g_return_if_fail (*type_name);
g_return_if_fail (fcn);
g_return_if_fail (typeTable); g_return_if_fail (typeTable);
g_hash_table_insert (typeTable, (char *) type_name, (gpointer) fcn); g_hash_table_insert (typeTable, (char *) type_name, (gpointer) fcn);

View File

@ -932,7 +932,11 @@ static int build_owner_report (GncOwner *owner, Account *acc)
args = scm_cons (SCM_BOOL_F, args); args = scm_cons (SCM_BOOL_F, args);
} }
arg = SWIG_NewPointerObj(owner, SWIG_TypeQuery("_p__gncOwner"), 0); swig_type_info * qtype = SWIG_TypeQuery("_p__gncOwner");
g_return_val_if_fail (qtype, -1);
arg = SWIG_NewPointerObj(owner, qtype, 0);
g_return_val_if_fail (arg != SCM_UNDEFINED, -1); g_return_val_if_fail (arg != SCM_UNDEFINED, -1);
args = scm_cons (arg, args); args = scm_cons (arg, args);

View File

@ -411,6 +411,9 @@ gnc_get_optiondb_from_dispatcher(SCM dispatcher)
else else
c_ptr = reinterpret_cast<void*>(SCM_CELL_WORD_1(smob)); c_ptr = reinterpret_cast<void*>(SCM_CELL_WORD_1(smob));
} }
else
return nullptr;
auto u_ptr{static_cast<std::unique_ptr<GncOptionDB>*>(c_ptr)}; auto u_ptr{static_cast<std::unique_ptr<GncOptionDB>*>(c_ptr)};
return u_ptr->get(); return u_ptr->get();
} }

View File

@ -612,8 +612,11 @@ parse_string (var_store_ptr value, const char *string, parser_env_ptr pe)
var_store_ptr val; var_store_ptr val;
val = pop (pe); val = pop (pe);
pe->negate_numeric (val->value); if (val)
push (val, pe); {
pe->negate_numeric (val->value);
push (val, pe);
}
} }
} }

View File

@ -731,6 +731,8 @@ qof_scan_date_internal (const char *buff, int *day, int *month, int *year,
/* today's date */ /* today's date */
gnc_time (&secs); gnc_time (&secs);
now = gnc_localtime (&secs); now = gnc_localtime (&secs);
if (!now)
return FALSE;
now_day = now->tm_mday; now_day = now->tm_mday;
now_month = now->tm_mon + 1; now_month = now->tm_mon + 1;
now_year = now->tm_year + 1900; now_year = now->tm_year + 1900;

View File

@ -1208,7 +1208,8 @@ qof_query_merge(QofQuery *q1, QofQuery *q2, QofQueryOp op)
break; break;
} }
retval->search_for = search_for; if (retval)
retval->search_for = search_for;
return retval; return retval;
} }