git://git.onelab.eu
/
sliver-openvswitch.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ofproto: Fix potential leak during flow mods.
[sliver-openvswitch.git]
/
lib
/
json.c
diff --git
a/lib/json.c
b/lib/json.c
index
ddce335
..
58b248a
100644
(file)
--- a/
lib/json.c
+++ b/
lib/json.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (c) 2009, 2010, 2011 Nicira, Inc.
+ * Copyright (c) 2009, 2010, 2011
, 2012
Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@
-18,7
+18,6
@@
#include "json.h"
#include "json.h"
-#include <assert.h>
#include <ctype.h>
#include <errno.h>
#include <float.h>
#include <ctype.h>
#include <errno.h>
#include <float.h>
@@
-288,42
+287,42
@@
json_object_put_string(struct json *json, const char *name, const char *value)
const char *
json_string(const struct json *json)
{
const char *
json_string(const struct json *json)
{
- assert(json->type == JSON_STRING);
+
ovs_
assert(json->type == JSON_STRING);
return json->u.string;
}
struct json_array *
json_array(const struct json *json)
{
return json->u.string;
}
struct json_array *
json_array(const struct json *json)
{
- assert(json->type == JSON_ARRAY);
- return
(struct json_array *) &json->u.array
;
+
ovs_
assert(json->type == JSON_ARRAY);
+ return
CONST_CAST(struct json_array *, &json->u.array)
;
}
struct shash *
json_object(const struct json *json)
{
}
struct shash *
json_object(const struct json *json)
{
- assert(json->type == JSON_OBJECT);
- return
(struct shash *) json->u.object
;
+
ovs_
assert(json->type == JSON_OBJECT);
+ return
CONST_CAST(struct shash *, json->u.object)
;
}
bool
json_boolean(const struct json *json)
{
}
bool
json_boolean(const struct json *json)
{
- assert(json->type == JSON_TRUE || json->type == JSON_FALSE);
+
ovs_
assert(json->type == JSON_TRUE || json->type == JSON_FALSE);
return json->type == JSON_TRUE;
}
double
json_real(const struct json *json)
{
return json->type == JSON_TRUE;
}
double
json_real(const struct json *json)
{
- assert(json->type == JSON_REAL || json->type == JSON_INTEGER);
+
ovs_
assert(json->type == JSON_REAL || json->type == JSON_INTEGER);
return json->type == JSON_REAL ? json->u.real : json->u.integer;
}
int64_t
json_integer(const struct json *json)
{
return json->type == JSON_REAL ? json->u.real : json->u.integer;
}
int64_t
json_integer(const struct json *json)
{
- assert(json->type == JSON_INTEGER);
+
ovs_
assert(json->type == JSON_INTEGER);
return json->u.integer;
}
\f
return json->u.integer;
}
\f
@@
-356,7
+355,7
@@
json_destroy(struct json *json)
break;
case JSON_N_TYPES:
break;
case JSON_N_TYPES:
- NOT_REACHED();
+
OVS_
NOT_REACHED();
}
free(json);
}
}
free(json);
}
@@
-418,7
+417,7
@@
json_clone(const struct json *json)
case JSON_N_TYPES:
default:
case JSON_N_TYPES:
default:
- NOT_REACHED();
+
OVS_
NOT_REACHED();
}
}
}
}
@@
-503,7
+502,7
@@
json_hash(const struct json *json, size_t basis)
case JSON_N_TYPES:
default:
case JSON_N_TYPES:
default:
- NOT_REACHED();
+
OVS_
NOT_REACHED();
}
}
}
}
@@
-574,7
+573,7
@@
json_equal(const struct json *a, const struct json *b)
case JSON_N_TYPES:
default:
case JSON_N_TYPES:
default:
- NOT_REACHED();
+
OVS_
NOT_REACHED();
}
}
\f
}
}
\f
@@
-621,11
+620,11
@@
json_lex_number(struct json_parser *p)
significand = 0;
if (*cp == '0') {
cp++;
significand = 0;
if (*cp == '0') {
cp++;
- if (isdigit(*cp)) {
+ if (isdigit(
(unsigned char)
*cp)) {
json_error(p, "leading zeros not allowed");
return;
}
json_error(p, "leading zeros not allowed");
return;
}
- } else if (isdigit(*cp)) {
+ } else if (isdigit(
(unsigned char)
*cp)) {
do {
if (significand <= ULLONG_MAX / 10) {
significand = significand * 10 + (*cp - '0');
do {
if (significand <= ULLONG_MAX / 10) {
significand = significand * 10 + (*cp - '0');
@@
-636,7
+635,7
@@
json_lex_number(struct json_parser *p)
}
}
cp++;
}
}
cp++;
- } while (isdigit(*cp));
+ } while (isdigit(
(unsigned char)
*cp));
} else {
json_error(p, "'-' must be followed by digit");
return;
} else {
json_error(p, "'-' must be followed by digit");
return;
@@
-645,7
+644,7
@@
json_lex_number(struct json_parser *p)
/* Optional fraction. */
if (*cp == '.') {
cp++;
/* Optional fraction. */
if (*cp == '.') {
cp++;
- if (!isdigit(*cp)) {
+ if (!isdigit(
(unsigned char)
*cp)) {
json_error(p, "decimal point must be followed by digit");
return;
}
json_error(p, "decimal point must be followed by digit");
return;
}
@@
-657,7
+656,7
@@
json_lex_number(struct json_parser *p)
imprecise = true;
}
cp++;
imprecise = true;
}
cp++;
- } while (isdigit(*cp));
+ } while (isdigit(
(unsigned char)
*cp));
}
/* Optional exponent. */
}
/* Optional exponent. */
@@
-673,7
+672,7
@@
json_lex_number(struct json_parser *p)
cp++;
}
cp++;
}
- if (!isdigit(*cp)) {
+ if (!isdigit(
(unsigned char)
*cp)) {
json_error(p, "exponent must contain at least one digit");
return;
}
json_error(p, "exponent must contain at least one digit");
return;
}
@@
-686,7
+685,7
@@
json_lex_number(struct json_parser *p)
}
exponent = exponent * 10 + (*cp - '0');
cp++;
}
exponent = exponent * 10 + (*cp - '0');
cp++;
- } while (isdigit(*cp));
+ } while (isdigit(
(unsigned char)
*cp));
if (negative_exponent) {
pow10 -= exponent;
if (negative_exponent) {
pow10 -= exponent;
@@
-1027,7
+1026,8
@@
json_from_file(const char *file_name)
stream = fopen(file_name, "r");
if (!stream) {
return json_string_create_nocopy(
stream = fopen(file_name, "r");
if (!stream) {
return json_string_create_nocopy(
- xasprintf("error opening \"%s\": %s", file_name, strerror(errno)));
+ xasprintf("error opening \"%s\": %s", file_name,
+ ovs_strerror(errno)));
}
json = json_from_stream(stream);
fclose(stream);
}
json = json_from_stream(stream);
fclose(stream);
@@
-1064,7
+1064,7
@@
json_from_stream(FILE *stream)
if (ferror(stream)) {
json_destroy(json);
json = json_string_create_nocopy(
if (ferror(stream)) {
json_destroy(json);
json = json_string_create_nocopy(
- xasprintf("error reading JSON stream: %s", strerror(errno)));
+ xasprintf("error reading JSON stream: %s",
ovs_
strerror(errno)));
}
return json;
}
return json;
@@
-1130,8
+1130,8
@@
json_parser_finish(struct json_parser *p)
}
if (!p->error) {
}
if (!p->error) {
- assert(p->height == 1);
- assert(p->stack[0].json != NULL);
+
ovs_
assert(p->height == 1);
+
ovs_
assert(p->stack[0].json != NULL);
json = p->stack[--p->height].json;
} else {
json = json_string_create_nocopy(p->error);
json = p->stack[--p->height].json;
} else {
json = json_string_create_nocopy(p->error);
@@
-1175,7
+1175,7
@@
json_parser_put_value(struct json_parser *p, struct json *value)
} else if (node->json->type == JSON_ARRAY) {
json_array_add(node->json, value);
} else {
} else if (node->json->type == JSON_ARRAY) {
json_array_add(node->json, value);
} else {
- NOT_REACHED();
+
OVS_
NOT_REACHED();
}
}
}
}
@@
-1295,7
+1295,7
@@
json_parser_pop(struct json_parser *p)
} else if (node->json->type == JSON_OBJECT) {
p->parse_state = JSON_PARSE_OBJECT_NEXT;
} else {
} else if (node->json->type == JSON_OBJECT) {
p->parse_state = JSON_PARSE_OBJECT_NEXT;
} else {
- NOT_REACHED();
+
OVS_
NOT_REACHED();
}
}
}
}
}
}
@@
-1502,7
+1502,7
@@
json_serialize(const struct json *json, struct json_serializer *s)
case JSON_N_TYPES:
default:
case JSON_N_TYPES:
default:
- NOT_REACHED();
+
OVS_
NOT_REACHED();
}
}
}
}