commit afb063af263a04a637adaf84fb99a914fef9cba7
parent f36382f5b8ccd91c72f59b9d85149893dfc8f9a7
Author: Remy Noulin <loader2x@gmail.com>
Date: Mon, 23 Dec 2019 15:58:38 +0100
remove double free in setTopJson functions
release/libsheepy.h | 2 +-
src/json/libsheepyCSmallJson.c | 34 +++++++++++-----------------------
src/libsheepy.h | 2 +-
3 files changed, 13 insertions(+), 25 deletions(-)
Diffstat:
3 files changed, 13 insertions(+), 25 deletions(-)
diff --git a/release/libsheepy.h b/release/libsheepy.h
@@ -96,7 +96,7 @@
// version accoring to the version package: Release.Major.minor.patch
// https://noulin.net/version/file/README.md.html
-#define LIBSHEEPY_VERSION "1.1.0"
+#define LIBSHEEPY_VERSION "1.1.0.1"
#ifndef SH_PREFIX
#define SH_PREFIX(NAME) NAME
diff --git a/src/json/libsheepyCSmallJson.c b/src/json/libsheepyCSmallJson.c
@@ -2981,43 +2981,43 @@ internal smallJsont* setTopSmallJson(smallJsont *self, baset *value) {
if (isOType(value, "undefined") && (self->topIsA == SMALLJSON_IS_EMPTY)) {
self->topIsA = TOP_IS_UNDEFINED;
sFree((smallt *)self->topU);
- self->topU = (sUndefinedt *)toSmallt(value);;
+ self->topU = (sUndefinedt *)toSmallt(value);
return(self);
}
if (isOType(value, "smallBool") && (self->topIsA == SMALLJSON_IS_EMPTY)) {
self->topIsA = TOP_IS_BOOL;
sFree((smallt *)self->topB);
- self->topB = (sBoolt *)toSmallt(value);;
+ self->topB = (sBoolt *)toSmallt(value);
return(self);
}
if (isOType(value, "smallDouble") && (self->topIsA == SMALLJSON_IS_EMPTY)) {
self->topIsA = TOP_IS_DOUBLE;
sFree((smallt *)self->topD);
- self->topD = (sDoublet *)toSmallt(value);;
+ self->topD = (sDoublet *)toSmallt(value);
return(self);
}
if (isOType(value, "smallInt") && (self->topIsA == SMALLJSON_IS_EMPTY)) {
self->topIsA = TOP_IS_INT;
sFree((smallt *)self->topI);
- self->topI = (sIntt *)toSmallt(value);;
+ self->topI = (sIntt *)toSmallt(value);
return(self);
}
if (isOType(value, "smallString") && (self->topIsA == SMALLJSON_IS_EMPTY)) {
self->topIsA = TOP_IS_STRING;
sFree((smallt *)self->topS);
- self->topS = (sStringt *)toSmallt(value);;
+ self->topS = (sStringt *)toSmallt(value);
return(self);
}
if (isOType(value, "smallDict") && (self->topIsA == SMALLJSON_IS_EMPTY)) {
self->topIsA = TOP_IS_DICT;
sFree((smallt *)self->top);
- self->top = (sDictt *)toSmallt(value);;
+ self->top = (sDictt *)toSmallt(value);
return(self);
}
if (isOType(value, "smallArray") && (self->topIsA == SMALLJSON_IS_EMPTY)) {
self->topIsA = TOP_IS_ARRAY;
sFree((smallt *)self->topA);
- self->topA = (sArrayt *)toSmallt(value);;
+ self->topA = (sArrayt *)toSmallt(value);
return(self);
}
if (isOType(value, "smallJson") && (self->topIsA == SMALLJSON_IS_EMPTY)) {
@@ -3068,10 +3068,7 @@ internal smallJsont* setTopBoolSmallJson(smallJsont *self, bool value) {
smallBoolt *v = allocSmallBool(value);
smallJsont *r = setTopNFreeSmallJson(self, (baset*) v);;
- if (r) {
- finishO(v);
- }
- else {
+ if (!r) {
terminateO(v);
}
return(self);
@@ -3081,10 +3078,7 @@ internal smallJsont* setTopDoubleSmallJson(smallJsont *self, double value) {
smallDoublet *v = allocSmallDouble(value);;
smallJsont *r = setTopNFreeSmallJson(self, (baset*) v);;
- if (r) {
- finishO(v);
- }
- else {
+ if (!r) {
terminateO(v);
}
return(self);
@@ -3094,10 +3088,7 @@ internal smallJsont* setTopIntSmallJson(smallJsont *self, int64_t value) {
smallIntt *v = allocSmallInt(value);;
smallJsont *r = setTopNFreeSmallJson(self, (baset*) v);;
- if (r) {
- finishO(v);
- }
- else {
+ if (!r) {
terminateO(v);
}
return(self);
@@ -3110,10 +3101,7 @@ internal smallJsont* setTopStringSmallJson(smallJsont *self, const char *value)
}
smallStringt *v = allocSmallString(value);;
smallJsont *r = setTopNFreeSmallJson(self, (baset*) v);;
- if (r) {
- finishO(v);
- }
- else {
+ if (!r) {
terminateO(v);
}
return(self);
diff --git a/src/libsheepy.h b/src/libsheepy.h
@@ -96,7 +96,7 @@
// version accoring to the version package: Release.Major.minor.patch
// https://noulin.net/version/file/README.md.html
-#define LIBSHEEPY_VERSION "1.1.0"
+#define LIBSHEEPY_VERSION "1.1.0.1"
#ifndef SH_PREFIX
#define SH_PREFIX(NAME) NAME