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.
Files changed (2) hide show
  1. package/package.json +14 -14
  2. 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.0",
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 20.10.0",
16
- "prebuild-win32": "prebuildify-platform-packages --target 20.10.0 && set ENABLE_V8_FUNCTIONS=false&& prebuildify-platform-packages --platform-packages --napi --target 20.10.0",
17
- "prebuild-macos": "prebuildify-platform-packages --target 20.0.0 && ENABLE_V8_FUNCTIONS=false prebuildify-platform-packages --napi --platform-packages --target 20.10.0",
18
- "prebuild-libc": "prebuildify-platform-packages --tag-libc --target 20.10.0 && prebuildify-platform-packages --platform-packages --napi --tag-libc --target 16.14.2 && ENABLE_V8_FUNCTIONS=false prebuildify-platform-packages --platform-packages --napi --tag-libc --target 20.10.0",
19
- "prebuild-libc-alpine": "prebuildify-cross --image alpine --tag-libc --target 20.10.0",
20
- "publish-all": "cd prebuilds/win32-x64 && npm publish --access public && cd ../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",
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.4",
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.0",
44
- "@cbor-extract/cbor-extract-darwin-x64": "2.2.0",
45
- "@cbor-extract/cbor-extract-linux-arm": "2.2.0",
46
- "@cbor-extract/cbor-extract-linux-arm64": "2.2.0",
47
- "@cbor-extract/cbor-extract-linux-x64": "2.2.0",
48
- "@cbor-extract/cbor-extract-win32-x64": "2.2.0"
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); }