[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnunet] 01/03: auction: add pricemap validation
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnunet] 01/03: auction: add pricemap validation |
Date: |
Thu, 12 Jan 2017 20:18:40 +0100 |
This is an automated email from the git hooks/post-receive script.
mteich pushed a commit to branch master
in repository gnunet.
commit cafbbb5994d333323e79c02ecd4700d82ff4242c
Author: Markus Teich <address@hidden>
AuthorDate: Thu Jan 12 19:23:12 2017 +0100
auction: add pricemap validation
---
src/auction/gnunet-auction-create.c | 52 +++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/src/auction/gnunet-auction-create.c
b/src/auction/gnunet-auction-create.c
index c21e93f26..dc43f635e 100644
--- a/src/auction/gnunet-auction-create.c
+++ b/src/auction/gnunet-auction-create.c
@@ -24,6 +24,9 @@
* @author Markus Teich
*/
#include "platform.h"
+
+#include <float.h>
+
#include "gnunet_util_lib.h"
#include "gnunet_json_lib.h"
/* #include "gnunet_auction_service.h" */
@@ -56,6 +59,13 @@ run (void *cls,
const char *cfgfile,
const struct GNUNET_CONFIGURATION_Handle *cfg)
{
+ unsigned int i;
+ double cur, prev = DBL_MAX;
+ json_t *pmap;
+ json_t *parray;
+ json_t *pnode;
+ json_error_t jerr;
+
/* cmdline parsing */
if (GNUNET_TIME_UNIT_ZERO.rel_value_us == dstart.rel_value_us)
{
@@ -82,6 +92,48 @@ run (void *cls,
goto fail;
}
+ /* parse and check pricemap validity */
+ if (!(pmap = json_load_file (fnprices, JSON_DECODE_INT_AS_REAL, &jerr)))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "parsing pricemap json at %d:%d: %s\n",
+ jerr.line, jerr.column, jerr.text);
+ goto fail;
+ }
+ if (-1 == json_unpack_ex (pmap, &jerr, JSON_VALIDATE_ONLY,
+ "{s:s, s:[]}", "currency", "prices"))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "validating pricemap: %s\n", jerr.text);
+ goto fail;
+ }
+ if (!(parray = json_object_get (pmap, "prices")) || !json_is_array
(parray))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "could not get `prices` array node from
pricemap\n");
+ goto fail;
+ }
+ json_array_foreach (parray, i, pnode)
+ {
+ if (-1 == json_unpack_ex (pnode, &jerr, 0, "F", &cur))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "validating pricearray index %d: %s\n", i,
jerr.text);
+ goto fail;
+ }
+ if (prev <= cur)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "validating pricearray index %d: "
+ "prices must be strictly monotonically
decreasing\n",
+ i);
+ goto fail;
+ }
+ prev = cur;
+ }
+
+ return;
+
fail:
ret = 1;
return;
--
To stop receiving notification emails like this one, please contact
address@hidden