Fix bug #680. Check that src/dest memcpy arguments are non-NULL.

This commit is contained in:
Brian Taylor 2024-08-22 09:09:03 -07:00 committed by Holger Vogt
parent 4b0beff839
commit 4a9a734bf3
3 changed files with 12 additions and 7 deletions

View File

@ -246,8 +246,9 @@ NIiter(CKTcircuit *ckt, int maxIter)
CKTnumStates the first time it is run */
if (!OldCKTstate0)
OldCKTstate0 = TMALLOC(double, ckt->CKTnumStates + 1);
memcpy(OldCKTstate0, ckt->CKTstate0,
(size_t) ckt->CKTnumStates * sizeof(double));
if (ckt->CKTstate0)
memcpy(OldCKTstate0, ckt->CKTstate0,
(size_t) ckt->CKTnumStates * sizeof(double));
startTime = SPfrontEnd->IFseconds();
SMPsolve(ckt->CKTmatrix, ckt->CKTrhs, ckt->CKTrhsSpare);

View File

@ -341,8 +341,10 @@ DCtran(CKTcircuit *ckt,
ckt->CKTmode = (ckt->CKTmode&MODEUIC) | MODETRAN | MODEINITTRAN;
/* modeinittran set here */
ckt->CKTag[0]=ckt->CKTag[1]=0;
memcpy(ckt->CKTstate1, ckt->CKTstate0,
(size_t) ckt->CKTnumStates * sizeof(double));
if (ckt->CKTstate1 && ckt->CKTstate0) {
memcpy(ckt->CKTstate1, ckt->CKTstate0,
(size_t) ckt->CKTnumStates * sizeof(double));
}
#ifdef WANT_SENSE2
if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode & TRANSEN)){
@ -790,7 +792,7 @@ resume:
ckt->CKTstat->STATtimePts ++;
ckt->CKTmode = (ckt->CKTmode&MODEUIC)|MODETRAN | MODEINITPRED;
if(firsttime) {
if(firsttime && ckt->CKTstate1 && ckt->CKTstate2 && ckt->CKTstate3) {
memcpy(ckt->CKTstate2, ckt->CKTstate1,
(size_t) ckt->CKTnumStates * sizeof(double));
memcpy(ckt->CKTstate3, ckt->CKTstate1,

View File

@ -456,8 +456,10 @@ DCtrCurv(CKTcircuit *ckt, int restart)
if (firstTime) {
firstTime = 0;
memcpy(ckt->CKTstate1, ckt->CKTstate0,
(size_t) ckt->CKTnumStates * sizeof(double));
if (ckt->CKTstate1 && ckt->CKTstate0) {
memcpy(ckt->CKTstate1, ckt->CKTstate0,
(size_t) ckt->CKTnumStates * sizeof(double));
}
}
i = 0;