From 289dc57bf60e9d6bdd71912a070c537147daa8ba Mon Sep 17 00:00:00 2001 From: jl777 Date: Wed, 26 Oct 2016 10:51:41 -0300 Subject: [PATCH] test --- src/komodo.h | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/komodo.h b/src/komodo.h index b59fcd08c..ec4b8b57a 100644 --- a/src/komodo.h +++ b/src/komodo.h @@ -109,13 +109,16 @@ void komodo_stateupdate(int32_t height,uint8_t notarypubs[][33],uint8_t numnotar else if ( func == 'O' ) { uint16_t olen; uint64_t ovalue; uint8_t opret[10000]; - if ( fread(&olen,1,sizeof(olen),fp) != sizeof(olen) ) - errs++; if ( fread(&ovalue,1,sizeof(ovalue),fp) != sizeof(ovalue) ) errs++; - if ( fread(opret,1,olen,fp) != olen ) + if ( fread(&olen,1,sizeof(olen),fp) != sizeof(olen) ) errs++; - komodo_opreturn(ht,ovalue,opret,olen); + if ( olen < sizeof(opret) ) + { + if ( fread(opret,1,olen,fp) != olen ) + errs++; + komodo_opreturn(ht,ovalue,opret,olen); + } else printf("illegal olen.%u\n",olen); } else if ( func == 'D' ) { @@ -158,11 +161,15 @@ void komodo_stateupdate(int32_t height,uint8_t notarypubs[][33],uint8_t numnotar } else if ( opretbuf != 0 && opretlen > 0 ) { + uint16_t olen; fputc('O',fp); if ( fwrite(&height,1,sizeof(height),fp) != sizeof(height) ) errs++; if ( fwrite(&opretvalue,1,sizeof(opretvalue),fp) != sizeof(opretvalue) ) errs++; + olen = opretlen; + if ( fwrite(&olen,1,sizeof(olen),fp) != olen ) + errs++; if ( fwrite(opretbuf,1,opretlen,fp) != opretlen ) errs++; komodo_opreturn(height,opretvalue,opretbuf,opretlen);