@@ -102,15 +102,15 @@ char *subatomic_checkname(char *tmpstr,struct msginfo *mp,int32_t baserel,char *
102
102
{
103
103
ptr -> isexternal = 1 ;
104
104
//strcpy(ptr->cli,clistr); - banned method.
105
- snprintf (ptr -> cli ,strlen (clistr ),"%s" ,clistr ); //guaranteed to null terminate the string
105
+ snprintf (ptr -> cli ,strlen (clistr ) + 1 ,"%s" ,clistr ); //guaranteed to null terminate the string
106
106
fprintf (stderr ,"found external coin %s %s %s\n" ,coin ,clistr ,ptr -> cli ); //debug 333
107
107
}
108
108
}
109
109
}
110
110
if ( coin [0 ] == '#' )
111
111
{
112
- snprintf (ptr -> coinstr ,strlen (coin ),"%s" ,coin );
113
- snprintf (ptr -> acname ,strlen ("" ),"%s" ,"" );
112
+ snprintf (ptr -> coinstr ,strlen (coin ) + 1 ,"%s" ,coin );
113
+ snprintf (ptr -> acname ,strlen ("" ) + 1 ,"%s" ,"" );
114
114
ptr -> isfile = 1 ;
115
115
return (coin );
116
116
}
@@ -122,32 +122,32 @@ char *subatomic_checkname(char *tmpstr,struct msginfo *mp,int32_t baserel,char *
122
122
dpow_tokenregister (ptr -> tokenid ,0 ,coin ,0 );
123
123
if ( ptr -> tokenid [0 ] != 0 )
124
124
{
125
- snprintf (tmpstr ,strlen (coin ),"%s" ,coin );
125
+ snprintf (tmpstr ,strlen (coin ) + 1 ,"%s" ,coin );
126
126
tmpstr [i ] = 0 ;
127
127
//fprintf(stderr,"found a tokenmap %s -> %s %s\n",coin,tmpstr,ptr->tokenid);
128
128
ptr -> istoken = 1 ;
129
- snprintf (ptr -> acname ,strlen (coin ),"%s" ,coin );
130
- snprintf (ptr -> coinstr ,strlen ("" ),"%s" ,"" );
129
+ snprintf (ptr -> acname ,strlen (coin ) + 1 ,"%s" ,coin );
130
+ snprintf (ptr -> coinstr ,strlen ("" ) + 1 ,"%s" ,"" );
131
131
return (tmpstr );
132
132
}
133
133
}
134
134
if ( ptr -> isexternal == 0 )
135
135
{
136
136
if ( strcmp (coin ,"KMD" ) != 0 )
137
137
{
138
- snprintf (ptr -> acname ,strlen (coin ),"%s" ,coin );
139
- snprintf (ptr -> coinstr ,strlen ("" ),"%s" ,"" );
138
+ snprintf (ptr -> acname ,strlen (coin ) + 1 ,"%s" ,coin );
139
+ snprintf (ptr -> coinstr ,strlen ("" ) + 1 ,"%s" ,"" );
140
140
}
141
141
else
142
142
{
143
- snprintf (ptr -> coinstr ,strlen (coin ),"%s" ,coin );
144
- snprintf (ptr -> acname ,strlen ("" ),"%s" ,"" );
143
+ snprintf (ptr -> coinstr ,strlen (coin ) + 1 ,"%s" ,coin );
144
+ snprintf (ptr -> acname ,strlen ("" ) + 1 ,"%s" ,"" );
145
145
}
146
146
}
147
147
else
148
148
{
149
- snprintf (ptr -> coinstr ,strlen (coin ),"%s" ,coin );
150
- snprintf (ptr -> acname ,strlen ("" ),"%s" ,"" );
149
+ snprintf (ptr -> coinstr ,strlen (coin ) + 1 ,"%s" ,coin );
150
+ snprintf (ptr -> acname ,strlen ("" ) + 1 ,"%s" ,"" );
151
151
}
152
152
return (coin );
153
153
}
@@ -567,7 +567,7 @@ char *subatomic_hexstr(char *jsonstr)
567
567
{
568
568
char * hexstr ; int32_t i ,c ,n = (int32_t )strlen (jsonstr );
569
569
hexstr = malloc (2 * n + 3 );
570
- snprintf (hexstr ,strlen (jsonstr ),"%s" ,jsonstr );
570
+ snprintf (hexstr ,strlen (jsonstr ) + 1 ,"%s" ,jsonstr );
571
571
for (i = 0 ; i < n ; i ++ )
572
572
{
573
573
if ( (c = jsonstr [i ]) == '"' )
@@ -617,16 +617,16 @@ cJSON *subatomic_mpjson(struct msginfo *mp)
617
617
uint64_t subatomic_orderbook_mpset (struct msginfo * mp ,char * basecheck )
618
618
{
619
619
cJSON * retjson ; char * tagA ,* tagB ,* senderpub ,* str ,tmpstr [32 ]; int32_t matches = 0 ; double volA ,volB ; int64_t txfee = 0 ;
620
- snprintf (mp -> base .name ,strlen (basecheck ),"%s" ,basecheck );
621
- snprintf (mp -> base .coin ,strlen (subatomic_checkname (tmpstr ,mp ,0 ,basecheck )),"%s" ,subatomic_checkname (tmpstr ,mp ,0 ,basecheck ));
620
+ snprintf (mp -> base .name ,strlen (basecheck ) + 1 ,"%s" ,basecheck );
621
+ snprintf (mp -> base .coin ,strlen (subatomic_checkname (tmpstr ,mp ,0 ,basecheck )) + 1 ,"%s" ,subatomic_checkname (tmpstr ,mp ,0 ,basecheck ));
622
622
mp -> rel .txfee = subatomic_txfee (mp -> rel .coin );
623
623
if ( (retjson = dpow_get (mp -> origid )) != 0 )
624
624
{
625
625
//fprintf(stderr,"dpow_get.(%s) (%s/%s)\n",jprint(retjson,0),mp->base.coin,mp->rel.coin);
626
626
if ( (senderpub = jstr (retjson ,"senderpub" )) != 0 && is_hexstr (senderpub ,0 ) == 66 && (tagA = jstr (retjson ,"tagA" )) != 0 && (tagB = jstr (retjson ,"tagB" )) != 0 && strncmp (tagB ,mp -> rel .name ,strlen (mp -> rel .name )) == 0 && strlen (tagA ) < sizeof (mp -> base .name ) )
627
627
{
628
- snprintf (mp -> base .name ,strlen (tagA ),"%s" ,tagA );
629
- snprintf (mp -> base .coin ,strlen (subatomic_checkname (tmpstr ,mp ,0 ,tagA )),"%s" ,subatomic_checkname (tmpstr ,mp ,0 ,tagA ));
628
+ snprintf (mp -> base .name ,strlen (tagA ) + 1 ,"%s" ,tagA );
629
+ snprintf (mp -> base .coin ,strlen (subatomic_checkname (tmpstr ,mp ,0 ,tagA )) + 1 ,"%s" ,subatomic_checkname (tmpstr ,mp ,0 ,tagA ));
630
630
if ( basecheck [0 ] == 0 || strncmp (basecheck ,tagA ,strlen (basecheck )) == 0 )
631
631
matches = 1 ;
632
632
else if ( strcmp (tagA ,mp -> base .name ) == 0 )
@@ -636,10 +636,10 @@ uint64_t subatomic_orderbook_mpset(struct msginfo *mp,char *basecheck)
636
636
if ( matches != 0 )
637
637
{
638
638
if ( (str = jstr (retjson ,"decrypted" )) != 0 && strlen (str ) < 128 )
639
- snprintf (mp -> payload ,strlen (str ),"%s" ,str );
639
+ snprintf (mp -> payload ,strlen (str ) + 1 ,"%s" ,str );
640
640
mp -> locktime = juint (retjson ,"timestamp" ) + SUBATOMIC_LOCKTIME ;
641
641
mp -> base .txfee = subatomic_txfee (mp -> base .coin );
642
- snprintf (mp -> senderpub ,strlen (senderpub ),"%s" ,senderpub );
642
+ snprintf (mp -> senderpub ,strlen (senderpub ) + 1 ,"%s" ,senderpub );
643
643
volB = jdouble (retjson ,"amountB" );
644
644
volA = jdouble (retjson ,"amountA" );
645
645
mp -> base .maxamount = volA * SATOSHIDEN + 0.0000000049999 ;
@@ -922,24 +922,24 @@ uint32_t subatomic_alice_openrequest(struct msginfo *origmp)
922
922
mp -> origid = origmp -> origid ;
923
923
mp -> rel .satoshis = origmp -> rel .satoshis ;
924
924
mp -> rel .istoken = origmp -> rel .istoken ;
925
- snprintf (mp -> rel .tokenid ,strlen (origmp -> rel .tokenid ),"%s" ,origmp -> rel .tokenid );
926
- snprintf (mp -> rel .name ,strlen (origmp -> rel .name ),"%s" ,origmp -> rel .name );
927
- snprintf (mp -> rel .coin ,strlen (subatomic_checkname (tmpstr ,mp ,1 ,origmp -> rel .name )),"%s" ,subatomic_checkname (tmpstr ,mp ,1 ,origmp -> rel .name ));
928
- snprintf (mp -> alice .pubkey ,strlen (DPOW_pubkeystr ),"%s" ,DPOW_pubkeystr );
929
- snprintf (mp -> alice .secp ,strlen (DPOW_secpkeystr ),"%s" ,DPOW_secpkeystr );
930
- snprintf (mp -> alice .recvZaddr ,strlen (DPOW_recvZaddr ),"%s" ,DPOW_recvZaddr );
931
- snprintf (mp -> alice .recvaddr ,strlen (DPOW_recvaddr ),"%s" ,DPOW_recvaddr );
925
+ snprintf (mp -> rel .tokenid ,strlen (origmp -> rel .tokenid ) + 1 ,"%s" ,origmp -> rel .tokenid );
926
+ snprintf (mp -> rel .name ,strlen (origmp -> rel .name ) + 1 ,"%s" ,origmp -> rel .name );
927
+ snprintf (mp -> rel .coin ,strlen (subatomic_checkname (tmpstr ,mp ,1 ,origmp -> rel .name )) + 1 ,"%s" ,subatomic_checkname (tmpstr ,mp ,1 ,origmp -> rel .name ));
928
+ snprintf (mp -> alice .pubkey ,strlen (DPOW_pubkeystr ) + 1 ,"%s" ,DPOW_pubkeystr );
929
+ snprintf (mp -> alice .secp ,strlen (DPOW_secpkeystr ) + 1 ,"%s" ,DPOW_secpkeystr );
930
+ snprintf (mp -> alice .recvZaddr ,strlen (DPOW_recvZaddr ) + 1 ,"%s" ,DPOW_recvZaddr );
931
+ snprintf (mp -> alice .recvaddr ,strlen (DPOW_recvaddr ) + 1 ,"%s" ,DPOW_recvaddr );
932
932
printf ("rel.%s/%s %s openrequest %u status.%d (%s/%s)\n" ,mp -> rel .name ,mp -> rel .coin ,mp -> rel .tokenid ,mp -> origid ,mp -> status ,mp -> alice .recvaddr ,mp -> alice .recvZaddr );
933
933
if ( mp -> status == 0 && subatomic_orderbook_mpset (mp ,"" ) != 0 )
934
934
{
935
- snprintf (mp -> bob .pubkey ,strlen (mp -> senderpub ),"%s" ,mp -> senderpub );
935
+ snprintf (mp -> bob .pubkey ,strlen (mp -> senderpub ) + 1 ,"%s" ,mp -> senderpub );
936
936
if ( subatomic_zonly (& mp -> base ) != 0 || subatomic_zonly (& mp -> rel ) != 0 )
937
937
mp -> OTCmode = 1 ;
938
938
else mp -> OTCmode = SUBATOMIC_OTCDEFAULT ;
939
- snprintf (origmp -> base .name ,strlen (mp -> base .name ),"%s" ,mp -> base .name );
940
- snprintf (origmp -> base .coin ,strlen (mp -> base .coin ),"%s" ,mp -> base .coin );
939
+ snprintf (origmp -> base .name ,strlen (mp -> base .name ) + 1 ,"%s" ,mp -> base .name );
940
+ snprintf (origmp -> base .coin ,strlen (mp -> base .coin ) + 1 ,"%s" ,mp -> base .coin );
941
941
origmp -> base .istoken = mp -> base .istoken ;
942
- snprintf (origmp -> base .tokenid ,strlen (mp -> base .tokenid ),"%s" ,mp -> base .tokenid );
942
+ snprintf (origmp -> base .tokenid ,strlen (mp -> base .tokenid ) + 1 ,"%s" ,mp -> base .tokenid );
943
943
origmp -> OTCmode = mp -> OTCmode ;
944
944
if ( mp -> rel .istoken != 0 && ((mp -> rel .satoshis % SATOSHIDEN ) != 0 || mp -> rel .iszaddr != 0 ) )
945
945
{
@@ -972,23 +972,23 @@ void subatomic_bob_gotopenrequest(uint32_t inboxid,char *senderpub,cJSON *msgjso
972
972
struct msginfo * mp ; cJSON * approval ; int32_t origid ; char * addr ,tmpstr [32 ],* coin ,* acname = "" ;
973
973
origid = juint (msgjson ,"origid" );
974
974
mp = subatomic_tracker (origid );
975
- snprintf (mp -> base .name ,strlen (basename ),"%s" ,basename );
976
- snprintf (mp -> base .coin ,strlen (subatomic_checkname (tmpstr ,mp ,0 ,basename )),"%s" ,subatomic_checkname (tmpstr ,mp ,0 ,basename ));
977
- snprintf (mp -> rel .name ,strlen (relname ),"%s" ,relname );
978
- snprintf (mp -> rel .coin ,strlen (subatomic_checkname (tmpstr ,mp ,1 ,relname )),"%s" ,subatomic_checkname (tmpstr ,mp ,1 ,relname ));
975
+ snprintf (mp -> base .name ,strlen (basename ) + 1 ,"%s" ,basename );
976
+ snprintf (mp -> base .coin ,strlen (subatomic_checkname (tmpstr ,mp ,0 ,basename )) + 1 ,"%s" ,subatomic_checkname (tmpstr ,mp ,0 ,basename ));
977
+ snprintf (mp -> rel .name ,strlen (relname ) + 1 ,"%s" ,relname );
978
+ snprintf (mp -> rel .coin ,strlen (subatomic_checkname (tmpstr ,mp ,1 ,relname )) + 1 ,"%s" ,subatomic_checkname (tmpstr ,mp ,1 ,relname ));
979
979
mp -> origid = origid ;
980
980
mp -> rel .satoshis = j64bits (msgjson ,"relsatoshis" );
981
981
mp -> bobflag = 1 ;
982
- snprintf (mp -> bob .pubkey ,strlen (DPOW_pubkeystr ),"%s" ,DPOW_pubkeystr );
983
- snprintf (mp -> bob .secp ,strlen (DPOW_secpkeystr ),"%s" ,DPOW_secpkeystr );
984
- snprintf (mp -> bob .recvZaddr ,strlen (DPOW_recvZaddr ),"%s" ,DPOW_recvZaddr );
985
- snprintf (mp -> bob .recvaddr ,strlen (DPOW_recvaddr ),"%s" ,DPOW_recvaddr );
982
+ snprintf (mp -> bob .pubkey ,strlen (DPOW_pubkeystr ) + 1 ,"%s" ,DPOW_pubkeystr );
983
+ snprintf (mp -> bob .secp ,strlen (DPOW_secpkeystr ) + 1 ,"%s" ,DPOW_secpkeystr );
984
+ snprintf (mp -> bob .recvZaddr ,strlen (DPOW_recvZaddr ) + 1 ,"%s" ,DPOW_recvZaddr );
985
+ snprintf (mp -> bob .recvaddr ,strlen (DPOW_recvaddr ) + 1 ,"%s" ,DPOW_recvaddr );
986
986
if ( (addr = jstr (msgjson ,"aliceaddr" )) != 0 )
987
- snprintf (mp -> alice .recvaddr ,strlen (addr ),"%s" ,addr );
987
+ snprintf (mp -> alice .recvaddr ,strlen (addr ) + 1 ,"%s" ,addr );
988
988
if ( (addr = jstr (msgjson ,"aliceZaddr" )) != 0 )
989
- snprintf (mp -> alice .recvZaddr ,strlen (addr ),"%s" ,addr );
989
+ snprintf (mp -> alice .recvZaddr ,strlen (addr ) + 1 ,"%s" ,addr );
990
990
if ( (addr = jstr (msgjson ,"alicesecp" )) != 0 )
991
- snprintf (mp -> alice .secp ,strlen (addr ),"%s" ,addr );
991
+ snprintf (mp -> alice .secp ,strlen (addr ) + 1 ,"%s" ,addr );
992
992
if ( subatomic_zonly (& mp -> base ) != 0 || subatomic_zonly (& mp -> rel ) != 0 )
993
993
mp -> OTCmode = 1 ;
994
994
else mp -> OTCmode = SUBATOMIC_OTCDEFAULT ;
@@ -1030,11 +1030,11 @@ int32_t subatomic_channelapproved(uint32_t inboxid,char *senderpub,cJSON *msgjso
1030
1030
if ( mp -> bobflag == 0 && mp -> status == SUBATOMIC_OPENREQUEST )
1031
1031
{
1032
1032
if ( (addr = jstr (msgjson ,"bobaddr" )) != 0 )
1033
- snprintf (mp -> bob .recvaddr ,strlen (addr ),"%s" ,addr );
1033
+ snprintf (mp -> bob .recvaddr ,strlen (addr ) + 1 ,"%s" ,addr );
1034
1034
if ( (addr = jstr (msgjson ,"bobZaddr" )) != 0 )
1035
- snprintf (mp -> bob .recvZaddr ,strlen (addr ),"%s" ,addr );
1035
+ snprintf (mp -> bob .recvZaddr ,strlen (addr ) + 1 ,"%s" ,addr );
1036
1036
if ( (addr = jstr (msgjson ,"bobsecp" )) != 0 )
1037
- snprintf (mp -> bob .secp ,strlen (addr ),"%s" ,addr );
1037
+ snprintf (mp -> bob .secp ,strlen (addr ) + 1 ,"%s" ,addr );
1038
1038
retval = subatomic_approved (mp ,approval ,msgjson ,senderpub );
1039
1039
}
1040
1040
else if ( mp -> bobflag != 0 && mp -> status == SUBATOMIC_APPROVED )
@@ -1356,8 +1356,8 @@ int32_t main(int32_t argc,char **argv)
1356
1356
}
1357
1357
}
1358
1358
hashstr = (char * )argv [3 ];
1359
- snprintf (M .rel .coin ,strlen (subatomic_checkname (tmpstr ,& M ,1 ,coin )),"%s" ,subatomic_checkname (tmpstr ,& M ,1 ,coin ));
1360
- snprintf (M .rel .name ,strlen (coin ),"%s" ,coin );
1359
+ snprintf (M .rel .coin ,strlen (subatomic_checkname (tmpstr ,& M ,1 ,coin )) + 1 ,"%s" ,subatomic_checkname (tmpstr ,& M ,1 ,coin ));
1360
+ snprintf (M .rel .name ,strlen (coin ) + 1 ,"%s" ,coin );
1361
1361
if ( argc == 4 && strlen (hashstr ) == 64 ) // for blocknotify usage, seems not needed
1362
1362
{
1363
1363
height = get_coinheight (coin ,acname ,& blockhash );
@@ -1422,8 +1422,8 @@ int32_t main(int32_t argc,char **argv)
1422
1422
else
1423
1423
{
1424
1424
M .bobflag = 1 ;
1425
- snprintf (M .base .name ,strlen (hashstr ),"%s" ,hashstr );
1426
- snprintf (M .base .coin ,strlen (subatomic_checkname (tmpstr ,& M ,0 ,hashstr )),"%s" ,subatomic_checkname (tmpstr ,& M ,0 ,hashstr ));
1425
+ snprintf (M .base .name ,strlen (hashstr ) + 1 ,"%s" ,hashstr );
1426
+ snprintf (M .base .coin ,strlen (subatomic_checkname (tmpstr ,& M ,0 ,hashstr )) + 1 ,"%s" ,subatomic_checkname (tmpstr ,& M ,0 ,hashstr ));
1427
1427
subatomic_loop (& M ); // while ( 1 ) loop for each relcoin -> basecoin
1428
1428
}
1429
1429
}
0 commit comments