cbor-extract 2.2.0 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +14 -14
- package/src/extract.cpp +13 -3
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cbor-extract",
|
|
3
3
|
"author": "Kris Zyp",
|
|
4
|
-
"version": "2.2.
|
|
4
|
+
"version": "2.2.2",
|
|
5
5
|
"description": "Node addon for string extraction for cbor-x",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
"install": "node-gyp-build-optional-packages",
|
|
13
13
|
"recompile": "node-gyp rebuild",
|
|
14
14
|
"before-publish": "prebuildify-ci download && node set-optional-deps.cjs",
|
|
15
|
-
"prebuild": "prebuildify-platform-packages --target
|
|
16
|
-
"prebuild-win32": "
|
|
17
|
-
"prebuild-macos": "prebuildify-platform-packages --target
|
|
18
|
-
"prebuild-libc": "prebuildify-platform-packages --tag-libc --target
|
|
19
|
-
"prebuild-libc-alpine": "prebuildify-cross --image alpine --tag-libc --target 20.
|
|
20
|
-
"publish-all": "cd prebuilds/
|
|
15
|
+
"prebuild": "prebuildify-platform-packages --target 24.14.0",
|
|
16
|
+
"prebuild-win32": "set ENABLE_V8_FUNCTIONS=false&& prebuildify-platform-packages --platform-packages --napi --target 20.20.0",
|
|
17
|
+
"prebuild-macos": "prebuildify-platform-packages --target 24.14.0 && ENABLE_V8_FUNCTIONS=false prebuildify-platform-packages --napi --platform-packages --target 20.20.0",
|
|
18
|
+
"prebuild-libc": "prebuildify-platform-packages --tag-libc --target 24.14.0 && ENABLE_V8_FUNCTIONS=false prebuildify-platform-packages --platform-packages --napi --tag-libc --target 20.20.0",
|
|
19
|
+
"prebuild-libc-alpine": "ENABLE_V8_FUNCTIONS=false prebuildify-cross --image alpine --tag-libc --napi --target 20.20.0",
|
|
20
|
+
"publish-all": "cd prebuilds/darwin-x64 && npm publish --access public && cd ../darwin-arm64 && npm publish --access public && cd ../linux-x64 && npm publish --access public && cd ../linux-arm64 && npm publish --access public && cd ../linux-arm && npm publish --access public && cd ../.. && npm publish --access public",
|
|
21
21
|
"test": "node ./index.js"
|
|
22
22
|
},
|
|
23
23
|
"main": "./index.js",
|
|
@@ -35,16 +35,16 @@
|
|
|
35
35
|
"download-cbor-prebuilds": "./bin/download-prebuilds.js"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"prebuildify-platform-packages": "5.0.
|
|
38
|
+
"prebuildify-platform-packages": "5.0.5",
|
|
39
39
|
"prebuildify-ci": "^1.0.5",
|
|
40
40
|
"prebuildify-cross": "5.0.0"
|
|
41
41
|
},
|
|
42
42
|
"optionalDependencies": {
|
|
43
|
-
"@cbor-extract/cbor-extract-darwin-arm64": "2.2.
|
|
44
|
-
"@cbor-extract/cbor-extract-darwin-x64": "2.2.
|
|
45
|
-
"@cbor-extract/cbor-extract-linux-arm": "2.2.
|
|
46
|
-
"@cbor-extract/cbor-extract-linux-arm64": "2.2.
|
|
47
|
-
"@cbor-extract/cbor-extract-linux-x64": "2.2.
|
|
48
|
-
"@cbor-extract/cbor-extract-win32-x64": "2.2.
|
|
43
|
+
"@cbor-extract/cbor-extract-darwin-arm64": "2.2.2",
|
|
44
|
+
"@cbor-extract/cbor-extract-darwin-x64": "2.2.2",
|
|
45
|
+
"@cbor-extract/cbor-extract-linux-arm": "2.2.2",
|
|
46
|
+
"@cbor-extract/cbor-extract-linux-arm64": "2.2.2",
|
|
47
|
+
"@cbor-extract/cbor-extract-linux-x64": "2.2.2",
|
|
48
|
+
"@cbor-extract/cbor-extract-win32-x64": "2.2.2"
|
|
49
49
|
}
|
|
50
50
|
}
|
package/src/extract.cpp
CHANGED
|
@@ -84,6 +84,9 @@ public:
|
|
|
84
84
|
lastStringEnd = 0;
|
|
85
85
|
position = startingPosition;
|
|
86
86
|
source = inputSource;
|
|
87
|
+
if ((uint64_t)startingPosition + firstStringSize > size) {
|
|
88
|
+
return unexpectedEnd(env);
|
|
89
|
+
}
|
|
87
90
|
readString(env, firstStringSize, firstStringSize < 0x100);
|
|
88
91
|
while (position < size) {
|
|
89
92
|
uint8_t token = source[position++];
|
|
@@ -121,11 +124,11 @@ public:
|
|
|
121
124
|
}
|
|
122
125
|
if (majorType == 3) {
|
|
123
126
|
// string
|
|
124
|
-
if (length + position > size) {
|
|
127
|
+
if ((uint64_t)length + position > size) {
|
|
125
128
|
return unexpectedEnd(env);
|
|
126
129
|
}
|
|
127
130
|
readString(env, length, length < 0x100);
|
|
128
|
-
if (writePosition >= MAX_TARGET_SIZE)
|
|
131
|
+
if (writePosition >= MAX_TARGET_SIZE - 1) // reserve slot for double-write
|
|
129
132
|
break;
|
|
130
133
|
} else { // binary data
|
|
131
134
|
position += length;
|
|
@@ -186,7 +189,14 @@ napi_value extractStrings(napi_env env, napi_callback_info info) {
|
|
|
186
189
|
napi_get_value_uint32(env, args[2], &firstStringSize);
|
|
187
190
|
uint8_t* source;
|
|
188
191
|
size_t buffer_size;
|
|
189
|
-
napi_get_buffer_info(env, args[3], (void**) &source, &buffer_size);
|
|
192
|
+
napi_status status = napi_get_buffer_info(env, args[3], (void**) &source, &buffer_size);
|
|
193
|
+
if (status) {
|
|
194
|
+
napi_throw_type_error(env, NULL, "Unexpected buffer type, expected a Buffer");
|
|
195
|
+
return args[0];
|
|
196
|
+
}
|
|
197
|
+
if (size > buffer_size || position > buffer_size) {
|
|
198
|
+
return unexpectedEnd(env);
|
|
199
|
+
}
|
|
190
200
|
return extractor->extractStrings(env, position, size, firstStringSize, source);
|
|
191
201
|
}
|
|
192
202
|
#define EXPORT_NAPI_FUNCTION(name, func) { napi_property_descriptor desc = { name, 0, func, 0, 0, 0, (napi_property_attributes) (napi_writable | napi_configurable), 0 }; napi_define_properties(env, exports, 1, &desc); }
|