@@ -3627,7 +3627,7 @@ int CMPTransaction::interpretPacket(CMPOffer *obj_o, CMPMetaDEx *mdex_o)
36273627{
36283628int rc = PKT_ERROR;
36293629
3630- if (0 > step1 ()) return -98765 ;
3630+ if (! interpret_TransactionType ()) return -98765 ;
36313631
36323632 if ((obj_o) && (MSC_TYPE_TRADE_OFFER != type)) return -777 ; // can't fill in the Offer object !
36333633 if ((mdex_o) && (MSC_TYPE_METADEX != type)) return -778 ; // can't fill in the MetaDEx object !
@@ -3638,23 +3638,19 @@ int rc = PKT_ERROR;
36383638 {
36393639 case MSC_TYPE_SIMPLE_SEND:
36403640 {
3641- memcpy (&property, &pkt[4 ], 4 );
3642- swapByteOrder32 (property);
3643- memcpy (&nValue, &pkt[8 ], 8 );
3644- swapByteOrder64 (nValue);
3645- nNewValue = nValue;
3641+ if (!interpret_SimpleSend ()) {
3642+ return PKT_ERROR;
3643+ }
36463644
36473645 rc = logicMath_SimpleSend ();
36483646 break ;
36493647 }
36503648
36513649 case MSC_TYPE_SEND_TO_OWNERS:
36523650 {
3653- memcpy (&property, &pkt[4 ], 4 );
3654- swapByteOrder32 (property);
3655- memcpy (&nValue, &pkt[8 ], 8 );
3656- swapByteOrder64 (nValue);
3657- nNewValue = nValue;
3651+ if (!interpret_SendToOwners ()) {
3652+ return PKT_ERROR;
3653+ }
36583654
36593655 boost::filesystem::path pathOwners = GetDataDir () / OWNERS_FILENAME;
36603656 FILE *fp = fopen (pathOwners.string ().c_str (), " a" );
@@ -3672,198 +3668,109 @@ int rc = PKT_ERROR;
36723668
36733669 case MSC_TYPE_TRADE_OFFER:
36743670 {
3675- memcpy (&property, &pkt[4 ], 4 );
3676- swapByteOrder32 (property);
3677- memcpy (&nValue, &pkt[8 ], 8 );
3678- swapByteOrder64 (nValue);
3679- nNewValue = nValue;
3680-
3681- memcpy (&amount_desired, &pkt[16 ], 8 );
3682- memcpy (&blocktimelimit, &pkt[24 ], 1 );
3683- memcpy (&min_fee, &pkt[25 ], 8 );
3684- memcpy (&subaction, &pkt[33 ], 1 );
3685- swapByteOrder64 (amount_desired);
3686- swapByteOrder64 (min_fee);
3671+ if (!interpret_TradeOffer ()) {
3672+ return PKT_ERROR;
3673+ }
36873674
36883675 rc = logicMath_TradeOffer (obj_o);
36893676 break ;
36903677 }
36913678
36923679 case MSC_TYPE_METADEX:
36933680 {
3694- memcpy (&property, &pkt[4 ], 4 );
3695- swapByteOrder32 (property);
3696- memcpy (&nValue, &pkt[8 ], 8 );
3697- swapByteOrder64 (nValue);
3698- nNewValue = nValue;
3699-
3700- memcpy (&desired_property, &pkt[16 ], 4 );
3701- swapByteOrder32 (desired_property);
3702- memcpy (&desired_value, &pkt[20 ], 8 );
3703- swapByteOrder64 (desired_value);
3704- memcpy (&action, &pkt[28 ], 1 );
3681+ if (!interpret_MetaDEx ()) {
3682+ return PKT_ERROR;
3683+ }
37053684
37063685 rc = logicMath_MetaDEx (mdex_o);
37073686 break ;
37083687 }
37093688
37103689 case MSC_TYPE_ACCEPT_OFFER_BTC:
37113690 {
3712- memcpy (&property, &pkt[4 ], 4 );
3713- swapByteOrder32 (property);
3714- memcpy (&nValue, &pkt[8 ], 8 );
3715- swapByteOrder64 (nValue);
3716- nNewValue = nValue;
3691+ if (!interpret_AcceptOfferBTC ()) {
3692+ return PKT_ERROR;
3693+ }
37173694
37183695 rc = logicMath_AcceptOffer_BTC ();
37193696 break ;
37203697 }
37213698
37223699 case MSC_TYPE_CREATE_PROPERTY_FIXED:
37233700 {
3724- const char * p = 11 + (char *) &pkt;
3725- std::vector<std::string> spstr;
3726- memcpy (&ecosystem, &pkt[4 ], 1 );
3727- memcpy (&prop_type, &pkt[5 ], 2 );
3728- swapByteOrder16 (prop_type);
3729- memcpy (&prev_prop_id, &pkt[7 ], 4 );
3730- swapByteOrder32 (prev_prop_id);
3731- for (int i = 0 ; i < 5 ; i++) {
3732- spstr.push_back (std::string (p));
3733- p += spstr.back ().size () + 1 ;
3701+ if (!interpret_CreatePropertyFixed ()) {
3702+ return PKT_ERROR;
37343703 }
3735- int i = 0 ;
3736- memcpy (category, spstr[i].c_str (), std::min (spstr[i].length (), sizeof (category)-1 )); i++;
3737- memcpy (subcategory, spstr[i].c_str (), std::min (spstr[i].length (), sizeof (subcategory)-1 )); i++;
3738- memcpy (name, spstr[i].c_str (), std::min (spstr[i].length (), sizeof (name)-1 )); i++;
3739- memcpy (url, spstr[i].c_str (), std::min (spstr[i].length (), sizeof (url)-1 )); i++;
3740- memcpy (data, spstr[i].c_str (), std::min (spstr[i].length (), sizeof (data)-1 )); i++;
3741- if (isOverrun (p, __LINE__)) return (PKT_ERROR_SP - 800 );
3742- if (!p) return (PKT_ERROR_SP -11 );
3743-
3744- memcpy (&nValue, p, 8 );
3745- swapByteOrder64 (nValue);
3746- p += 8 ;
3747- nNewValue = nValue;
3748- if (isOverrun (p, __LINE__)) return (PKT_ERROR_SP -900 );
37493704
37503705 rc = logicMath_CreatePropertyFixed ();
37513706 break ;
37523707 }
37533708
37543709 case MSC_TYPE_CREATE_PROPERTY_VARIABLE:
37553710 {
3756- const char * p = 11 + (char *) &pkt;
3757- std::vector<std::string> spstr;
3758- memcpy (&ecosystem, &pkt[4 ], 1 );
3759- memcpy (&prop_type, &pkt[5 ], 2 );
3760- swapByteOrder16 (prop_type);
3761- memcpy (&prev_prop_id, &pkt[7 ], 4 );
3762- swapByteOrder32 (prev_prop_id);
3763- for (int i = 0 ; i < 5 ; i++) {
3764- spstr.push_back (std::string (p));
3765- p += spstr.back ().size () + 1 ;
3711+ if (!interpret_CreatePropertyVariable ()) {
3712+ return PKT_ERROR;
37663713 }
3767- int i = 0 ;
3768- memcpy (category, spstr[i].c_str (), std::min (spstr[i].length (), sizeof (category)-1 )); i++;
3769- memcpy (subcategory, spstr[i].c_str (), std::min (spstr[i].length (), sizeof (subcategory)-1 )); i++;
3770- memcpy (name, spstr[i].c_str (), std::min (spstr[i].length (), sizeof (name)-1 )); i++;
3771- memcpy (url, spstr[i].c_str (), std::min (spstr[i].length (), sizeof (url)-1 )); i++;
3772- memcpy (data, spstr[i].c_str (), std::min (spstr[i].length (), sizeof (data)-1 )); i++;
3773- if (isOverrun (p, __LINE__)) return (PKT_ERROR_SP - 800 );
3774- if (!p) return (PKT_ERROR_SP -12 );
3775-
3776- memcpy (&property, p, 4 );
3777- swapByteOrder32 (property);
3778- p += 4 ;
3779- memcpy (&nValue, p, 8 );
3780- swapByteOrder64 (nValue);
3781- p += 8 ;
3782- nNewValue = nValue;
3783- memcpy (&deadline, p, 8 );
3784- swapByteOrder64 (deadline);
3785- p += 8 ;
3786- memcpy (&early_bird, p++, 1 );
3787- memcpy (&percentage, p++, 1 );
3788- if (isOverrun (p, __LINE__)) return (PKT_ERROR_SP -765 );
37893714
37903715 rc = logicMath_CreatePropertyVariable ();
37913716 break ;
37923717 }
37933718
37943719 case MSC_TYPE_CLOSE_CROWDSALE:
37953720 {
3796- memcpy (&property, &pkt[4 ], 4 );
3797- swapByteOrder32 (property);
3721+ if (!interpret_CloseCrowdsale ()) {
3722+ return PKT_ERROR;
3723+ }
37983724
37993725 rc = logicMath_CloseCrowdsale ();
38003726 break ;
38013727 }
38023728
38033729 case MSC_TYPE_CREATE_PROPERTY_MANUAL:
38043730 {
3805- const char * p = 11 + (char *) &pkt;
3806- std::vector<std::string> spstr;
3807- memcpy (&ecosystem, &pkt[4 ], 1 );
3808- memcpy (&prop_type, &pkt[5 ], 2 );
3809- swapByteOrder16 (prop_type);
3810- memcpy (&prev_prop_id, &pkt[7 ], 4 );
3811- swapByteOrder32 (prev_prop_id);
3812- for (int i = 0 ; i < 5 ; i++) {
3813- spstr.push_back (std::string (p));
3814- p += spstr.back ().size () + 1 ;
3731+ if (!interpret_CreatePropertyMananged ()) {
3732+ return PKT_ERROR;
38153733 }
3816- int i = 0 ;
3817- memcpy (category, spstr[i].c_str (), std::min (spstr[i].length (), sizeof (category)-1 )); i++;
3818- memcpy (subcategory, spstr[i].c_str (), std::min (spstr[i].length (), sizeof (subcategory)-1 )); i++;
3819- memcpy (name, spstr[i].c_str (), std::min (spstr[i].length (), sizeof (name)-1 )); i++;
3820- memcpy (url, spstr[i].c_str (), std::min (spstr[i].length (), sizeof (url)-1 )); i++;
3821- memcpy (data, spstr[i].c_str (), std::min (spstr[i].length (), sizeof (data)-1 )); i++;
3822- if (isOverrun (p, __LINE__)) return (PKT_ERROR_SP - 800 );
3823- if (!p) return (PKT_ERROR_SP -11 );
38243734
38253735 rc = logicMath_CreatePropertyMananged ();
38263736 break ;
38273737 }
38283738
38293739 case MSC_TYPE_GRANT_PROPERTY_TOKENS:
38303740 {
3831- memcpy (&property, &pkt[4 ], 4 );
3832- swapByteOrder32 (property);
3833- memcpy (&nValue, &pkt[8 ], 8 );
3834- swapByteOrder64 (nValue);
3835- nNewValue = nValue;
3741+ if (!interpret_GrantTokens ()) {
3742+ return PKT_ERROR;
3743+ }
38363744
38373745 rc = logicMath_GrantTokens ();
38383746 break ;
38393747 }
38403748
38413749 case MSC_TYPE_REVOKE_PROPERTY_TOKENS:
38423750 {
3843- memcpy (&property, &pkt[4 ], 4 );
3844- swapByteOrder32 (property);
3845- memcpy (&nValue, &pkt[8 ], 8 );
3846- swapByteOrder64 (nValue);
3847- nNewValue = nValue;
3751+ if (!interpret_RevokeTokens ()) {
3752+ return PKT_ERROR;
3753+ }
38483754
38493755 rc = logicMath_RevokeTokens ();
38503756 break ;
38513757 }
38523758
38533759 case MSC_TYPE_CHANGE_ISSUER_ADDRESS:
38543760 {
3855- memcpy (&property, &pkt[4 ], 4 );
3856- swapByteOrder32 (property);
3761+ if (!interpret_ChangeIssuer ()) {
3762+ return PKT_ERROR;
3763+ }
38573764
38583765 rc = logicMath_ChangeIssuer ();
38593766 break ;
38603767 }
38613768
38623769 case OMNICORE_MESSAGE_TYPE_ALERT:
38633770 {
3864- const char * p = 4 + ( char *) &pkt;
3865- std::string spstr (p) ;
3866- memcpy (alertString, spstr. c_str (), std::min (spstr. length (), sizeof (alertString)- 1 ));
3771+ if (! interpret_Alert ()) {
3772+ return PKT_ERROR ;
3773+ }
38673774
38683775 rc = logicMath_Alert ();
38693776 break ;
0 commit comments