From e50edba6f270f9e7304df605e3816eb05efb9648 Mon Sep 17 00:00:00 2001 From: jl777 Date: Wed, 30 Jan 2019 03:35:35 -1100 Subject: [PATCH] Check for illegal solution --- src/cc/cclib.cpp | 6 +++--- src/cc/sudoku.cpp | 8 ++++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/cc/cclib.cpp b/src/cc/cclib.cpp index dd79d22d9..000245e56 100644 --- a/src/cc/cclib.cpp +++ b/src/cc/cclib.cpp @@ -37,17 +37,17 @@ char *CClib_name() { return((char *)MYCCLIBNAME.c_str()); } struct CClib_rpcinfo { char *CCname,*method,*help; - int32_t numrequiredargs,maxargs; // frontloaded with required + int32_t numrequiredargs,maxargs; uint8_t funcid,evalcode; } CClib_methods[] = { { (char *)"faucet2", (char *)"fund", (char *)"amount", 1, 1, 'F', EVAL_FAUCET2 }, { (char *)"faucet2", (char *)"get", (char *)"", 0, 0, 'G', EVAL_FAUCET2 }, - { (char *)"sudoku", (char *)"gen", (char *)"", 1, 1, 'G', EVAL_SUDOKU }, + { (char *)"sudoku", (char *)"gen", (char *)"", 0, 0, 'G', EVAL_SUDOKU }, { (char *)"sudoku", (char *)"txidinfo", (char *)"txid", 1, 1, 'T', EVAL_SUDOKU }, { (char *)"sudoku", (char *)"pending", (char *)"", 0, 0, 'U', EVAL_SUDOKU }, - { (char *)"sudoku", (char *)"solution", (char *)"txid solution timestamps[]", 2, 2, 'S', EVAL_SUDOKU }, + { (char *)"sudoku", (char *)"solution", (char *)"txid solution timestamps[81]", 83, 83, 'S', EVAL_SUDOKU }, }; std::string CClib_rawtxgen(struct CCcontract_info *cp,uint8_t funcid,cJSON *params); diff --git a/src/cc/sudoku.cpp b/src/cc/sudoku.cpp index 02c47ef97..e3cf7095d 100644 --- a/src/cc/sudoku.cpp +++ b/src/cc/sudoku.cpp @@ -2807,7 +2807,15 @@ UniValue sudoku_solution(uint64_t txfee,struct CCcontract_info *cp,cJSON *params { for (i=ind=0; i<9; i++) for (j=0; j<9; j++) + { + if ( solution[ind] < '1' || solution[ind] > '9' ) + { + result.push_back(Pair("result","error")); + result.push_back(Pair("error","illegal solution")); + return(result); + } vals9[i][j] = solution[ind++] - '0'; + } sudoku_privkey(priv32,vals9); priv2addr(coinaddr,pub33,priv32); pk = buf2pk(pub33);