exiftool-vendored 35.18.0 → 35.19.0
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/CHANGELOG.md +12 -3
- package/dist/BinaryExtractionTask.js +2 -0
- package/dist/BinaryExtractionTask.js.map +1 -1
- package/dist/BinaryExtractionTask.spec.js +5 -0
- package/dist/BinaryExtractionTask.spec.js.map +1 -1
- package/dist/BinaryToBufferTask.js +2 -2
- package/dist/BinaryToBufferTask.js.map +1 -1
- package/dist/BinaryToBufferTask.spec.js +4 -0
- package/dist/BinaryToBufferTask.spec.js.map +1 -1
- package/dist/ExifTool.d.ts +22 -3
- package/dist/ExifTool.js +23 -6
- package/dist/ExifTool.js.map +1 -1
- package/dist/ExifToolOptions.d.ts +18 -1
- package/dist/ExifToolOptions.js +3 -0
- package/dist/ExifToolOptions.js.map +1 -1
- package/dist/ExifToolTask.js +12 -0
- package/dist/ExifToolTask.js.map +1 -1
- package/dist/ExifToolTask.spec.d.ts +1 -0
- package/dist/ExifToolTask.spec.js +28 -0
- package/dist/ExifToolTask.spec.js.map +1 -0
- package/dist/ReadRawTask.spec.js +11 -0
- package/dist/ReadRawTask.spec.js.map +1 -1
- package/dist/ReadTask.d.ts +1 -1
- package/dist/ReadTask.js +9 -1
- package/dist/ReadTask.js.map +1 -1
- package/dist/ReadTask.spec.js +33 -0
- package/dist/ReadTask.spec.js.map +1 -1
- package/dist/RewriteAllTags.spec.js +12 -0
- package/dist/RewriteAllTags.spec.js.map +1 -1
- package/dist/StrEnum.js +2 -2
- package/dist/StrEnum.js.map +1 -1
- package/dist/StrEnum.spec.js +7 -0
- package/dist/StrEnum.spec.js.map +1 -1
- package/dist/TagNameValidation.d.ts +12 -0
- package/dist/TagNameValidation.js +42 -0
- package/dist/TagNameValidation.js.map +1 -0
- package/dist/TagNameValidation.spec.d.ts +1 -0
- package/dist/TagNameValidation.spec.js +120 -0
- package/dist/TagNameValidation.spec.js.map +1 -0
- package/dist/WriteTask.js +2 -0
- package/dist/WriteTask.js.map +1 -1
- package/dist/WriteTask.spec.js +34 -0
- package/dist/WriteTask.spec.js.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -35,10 +35,19 @@ vendored versions of ExifTool match the version that they vendor.
|
|
|
35
35
|
|
|
36
36
|
## History
|
|
37
37
|
|
|
38
|
+
### v35.18.1
|
|
39
|
+
|
|
40
|
+
- 🔥 **Security: argument injection hardening [GHSA-cw26-7653-2rp5](https://github.com/photostructure/exiftool-vendored.js/security/advisories/GHSA-cw26-7653-2rp5).** ExifTool runs in `-stay_open True -@ -` mode, where arguments are read from stdin one per line. Several caller-supplied strings were previously interpolated into ExifTool arguments without rejecting line delimiters, so a `\n` inside a tag name or filename could split one argument into many. Two layers of defense have been added:
|
|
41
|
+
- **Per-site validation.** A new `validateTagName` helper rejects tag-name strings that fall outside the ExifTool tag grammar (letters, digits, `:`, `-`, `_`, and the modifiers `*`, `?`, `+`, `#`). Applied to write tag keys, `deleteAllTags({retain})`, `read({numericTags})`, and the binary-extraction tag names. `imageHashType` is now also validated against an `ImageHashTypes` allowlist at runtime.
|
|
42
|
+
- **Defense-in-depth at the command renderer.** `ExifToolTask.renderCommand` now rejects any argument containing `\r`, `\n`, or `\0` before transmission. This covers filename/path arguments, including `readRaw()` and `rewriteAllTags()`, raw `readArgs` / `writeArgs`, option values, and future newline-delimited interpolation sites.
|
|
43
|
+
- Tag values passed to `write()` were already whitespace-encoded and were not vulnerable.
|
|
44
|
+
- Reported by Hank Tam through coordinated disclosure.
|
|
45
|
+
- ✨ Added `ImageHashTypes` runtime enum and `ImageHashType` type export, for callers that need runtime-checked construction of the `imageHashType` option.
|
|
46
|
+
|
|
38
47
|
### v35.18.0
|
|
39
|
-
|
|
40
|
-
- 🌱 Upgraded ExifTool to version [13.57](https://exiftool.org/history.html#13.57).
|
|
41
|
-
- 🐞 Fixes an ExifTool 13.56 regression (shipped in v35.17.0) where XMP list-valued tags (`dc:subject`, `HierarchicalSubject`, `Keywords`) read from sidecar files were collapsed to just the last `<rdf:li>` as a scalar string when `-api struct=1` was in effect. Users on v35.17.0 who read XMP sidecars should upgrade.
|
|
48
|
+
|
|
49
|
+
- 🌱 Upgraded ExifTool to version [13.57](https://exiftool.org/history.html#13.57).
|
|
50
|
+
- 🐞 Fixes an ExifTool 13.56 regression (shipped in v35.17.0) where XMP list-valued tags (`dc:subject`, `HierarchicalSubject`, `Keywords`) read from sidecar files were collapsed to just the last `<rdf:li>` as a scalar string when `-api struct=1` was in effect. Users on v35.17.0 who read XMP sidecars should upgrade.
|
|
42
51
|
|
|
43
52
|
### v35.17.0
|
|
44
53
|
|
|
@@ -9,6 +9,7 @@ const node_path_1 = __importDefault(require("node:path"));
|
|
|
9
9
|
const ExifToolTask_1 = require("./ExifToolTask");
|
|
10
10
|
const FilenameCharsetArgs_1 = require("./FilenameCharsetArgs");
|
|
11
11
|
const String_1 = require("./String");
|
|
12
|
+
const TagNameValidation_1 = require("./TagNameValidation");
|
|
12
13
|
const StdoutRe = /\b(\d+) output files? created/i;
|
|
13
14
|
/**
|
|
14
15
|
* Task that returns an error string (to prevent retries), or undefined if
|
|
@@ -27,6 +28,7 @@ class BinaryExtractionTask extends ExifToolTask_1.ExifToolTask {
|
|
|
27
28
|
* @returns a new BinaryExtractionTask instance
|
|
28
29
|
*/
|
|
29
30
|
static for(tagname, imgSrc, imgDest, options) {
|
|
31
|
+
(0, TagNameValidation_1.validateTagName)(tagname);
|
|
30
32
|
// Ensure the destination directory exists:
|
|
31
33
|
(0, node_fs_1.mkdirSync)(node_path_1.default.dirname(imgDest), { recursive: true });
|
|
32
34
|
const forceWrite = options?.forceWrite ?? false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BinaryExtractionTask.js","sourceRoot":"","sources":["../src/BinaryExtractionTask.ts"],"names":[],"mappings":";;;;;;AAAA,qCAAoC;AACpC,0DAA6B;AAE7B,iDAA8C;AAC9C,+DAAgE;AAEhE,qCAA+B;
|
|
1
|
+
{"version":3,"file":"BinaryExtractionTask.js","sourceRoot":"","sources":["../src/BinaryExtractionTask.ts"],"names":[],"mappings":";;;;;;AAAA,qCAAoC;AACpC,0DAA6B;AAE7B,iDAA8C;AAC9C,+DAAgE;AAEhE,qCAA+B;AAC/B,2DAAsD;AAQtD,MAAM,QAAQ,GAAG,gCAAgC,CAAC;AAElD;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,2BAA2B;IACnE,YAAoB,IAAc,EAAE,OAAqC;QACvE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,GAAG,CACR,OAAe,EACf,MAAc,EACd,OAAe,EACf,OAAqC;QAErC,IAAA,mCAAe,EAAC,OAAO,CAAC,CAAC;QACzB,2CAA2C;QAC3C,IAAA,mBAAS,EAAC,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtD,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,KAAK,CAAC;QAEhD,MAAM,IAAI,GAAG;YACX,GAAG,6CAAuB;YAC1B,IAAI,EAAE,UAAU;YAChB,GAAG,GAAG,OAAO;YACb,gEAAgE;YAChE,uDAAuD;YACvD,EAAE;YACF,sEAAsE;YACtE,sEAAsE;YACtE,6CAA6C;YAC7C,EAAE;YACF,wEAAwE;YACxE,kBAAkB;YAClB,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;YACzB,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACrB,mBAAI,CAAC,OAAO,CAAC,MAAM,CAAC;SACrB,CAAC;QACF,OAAO,IAAI,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,GAAW;QAC/B,MAAM,CAAC,GAAG,IAAA,YAAG,EAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,MAAM,GAAG,CAAC;QACZ,CAAC;aAAM,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC;QAC1E,CAAC;aAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;aAAM,CAAC;YACN,2EAA2E;YAC3E,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;CACF;AA3DD,oDA2DC"}
|
|
@@ -79,5 +79,10 @@ describe("BinaryExtractionTask", () => {
|
|
|
79
79
|
forceWrite: true,
|
|
80
80
|
});
|
|
81
81
|
});
|
|
82
|
+
it("rejects argument-injection via tagname", async () => {
|
|
83
|
+
const src = node_path_1.default.join(_chai_spec_1.testDir, "with_thumb.jpg");
|
|
84
|
+
const dest = (0, _chai_spec_1.tmpname)();
|
|
85
|
+
return (0, _chai_spec_1.expect)(ExifTool_1.exiftool.extractBinaryTag("ThumbnailImage\n-o\n../thumb-exploit", src, dest)).to.be.rejectedWith(/Invalid tag name|control character/);
|
|
86
|
+
});
|
|
82
87
|
});
|
|
83
88
|
//# sourceMappingURL=BinaryExtractionTask.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BinaryExtractionTask.spec.js","sourceRoot":"","sources":["../src/BinaryExtractionTask.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BinaryExtractionTask.spec.js","sourceRoot":"","sources":["../src/BinaryExtractionTask.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ const node_path_1 = __importDefault(require("node:path"));
|
|
|
8
8
|
const ExifToolTask_1 = require("./ExifToolTask");
|
|
9
9
|
const FilenameCharsetArgs_1 = require("./FilenameCharsetArgs");
|
|
10
10
|
const String_1 = require("./String");
|
|
11
|
+
const TagNameValidation_1 = require("./TagNameValidation");
|
|
11
12
|
/**
|
|
12
13
|
* Task that returns an error string (to prevent retries), or undefined if
|
|
13
14
|
* everything seems to have worked.
|
|
@@ -19,8 +20,7 @@ class BinaryToBufferTask extends ExifToolTask_1.ExifToolTask {
|
|
|
19
20
|
this.tagname = tagname;
|
|
20
21
|
}
|
|
21
22
|
static for(tagname, imgSrc, options) {
|
|
22
|
-
|
|
23
|
-
// ExifTool separates them via newlines.
|
|
23
|
+
(0, TagNameValidation_1.validateTagName)(tagname);
|
|
24
24
|
const args = [...FilenameCharsetArgs_1.Utf8FilenameCharsetArgs, "-json", "-b", "-" + tagname];
|
|
25
25
|
args.push(node_path_1.default.resolve(imgSrc));
|
|
26
26
|
return new BinaryToBufferTask(tagname, args, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BinaryToBufferTask.js","sourceRoot":"","sources":["../src/BinaryToBufferTask.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAC7B,iDAAmE;AACnE,+DAAgE;AAEhE,qCAAoC;
|
|
1
|
+
{"version":3,"file":"BinaryToBufferTask.js","sourceRoot":"","sources":["../src/BinaryToBufferTask.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAC7B,iDAAmE;AACnE,+DAAgE;AAEhE,qCAAoC;AACpC,2DAAsD;AAEtD;;;GAGG;AACH,MAAa,kBAAmB,SAAQ,2BAA4B;IAEvD;IADX,YACW,OAAe,EACxB,IAAc,EACd,OAA6B;QAE7B,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAJZ,YAAO,GAAP,OAAO,CAAQ;IAK1B,CAAC;IAED,MAAM,CAAC,GAAG,CACR,OAAe,EACf,MAAc,EACd,OAA6B;QAE7B,IAAA,mCAAe,EAAC,OAAO,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,GAAG,6CAAuB,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,mBAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAChC,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,IAAY,EAAE,GAAW;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAClC,iCAAiC;YACjC,CAAC;gBACC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBACzC,IAAI,MAAM,IAAI,IAAI;oBAAE,OAAO,MAAM,CAAC;YACpC,CAAC,CAAC,+CAA+C;YACjD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;oBACnD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,MAAM,IAAI,IAAI;wBAAE,OAAO,MAAM,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,GAAG,KAAK,IAAA,iBAAQ,EAAC,IAAI,CAAC;gBACpB,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;gBACjB,CAAC,CAAC,MAAM,YAAY,KAAK;oBACvB,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC;IACvD,CAAC;CACF;AA3CD,gDA2CC;AAED,MAAM,SAAS,GAAG,SAAS,CAAC;AAE5B,SAAS,MAAM,CAAC,IAAmB;IACjC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC;QACjC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -71,5 +71,9 @@ describe("BinaryToBufferTask", () => {
|
|
|
71
71
|
(0, _chai_spec_1.expect)(String(err)).to.match(/JpgFromRaw not found/i);
|
|
72
72
|
}
|
|
73
73
|
});
|
|
74
|
+
it("rejects argument-injection via tagname", async () => {
|
|
75
|
+
const src = node_path_1.default.join(_chai_spec_1.testDir, "with_thumb.jpg");
|
|
76
|
+
return (0, _chai_spec_1.expect)(ExifTool_1.exiftool.extractBinaryTagToBuffer("ThumbnailImage\n-p\n/etc/passwd", src)).to.be.rejectedWith(/Invalid tag name|control character/);
|
|
77
|
+
});
|
|
74
78
|
});
|
|
75
79
|
//# sourceMappingURL=BinaryToBufferTask.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BinaryToBufferTask.spec.js","sourceRoot":"","sources":["../src/BinaryToBufferTask.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BinaryToBufferTask.spec.js","sourceRoot":"","sources":["../src/BinaryToBufferTask.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/ExifTool.d.ts
CHANGED
|
@@ -36,7 +36,8 @@ export type { BinaryExtractionTaskOptions } from "./BinaryExtractionTask";
|
|
|
36
36
|
export type { ContainerDirectoryItem } from "./ContainerDirectoryItem";
|
|
37
37
|
export type { Defined, DefinedOrNullValued } from "./Defined";
|
|
38
38
|
export type { ErrorsAndWarnings } from "./ErrorsAndWarnings";
|
|
39
|
-
export
|
|
39
|
+
export { ImageHashTypes } from "./ExifToolOptions";
|
|
40
|
+
export type { ExifToolOptions, ImageHashType } from "./ExifToolOptions";
|
|
40
41
|
export type { ExifToolTaskOptions } from "./ExifToolTask";
|
|
41
42
|
export type { ExifToolVendoredTags } from "./ExifToolVendoredTags";
|
|
42
43
|
export type { GeolocationTags } from "./GeolocationTags";
|
|
@@ -167,7 +168,11 @@ export declare class ExifTool {
|
|
|
167
168
|
*
|
|
168
169
|
* @param file an existing file to write `tags` to
|
|
169
170
|
*
|
|
170
|
-
* @param tags the tags to write to `file`.
|
|
171
|
+
* @param tags the tags to write to `file`. Each key must be a valid ExifTool
|
|
172
|
+
* tag reference; the promise rejects keys containing whitespace, control
|
|
173
|
+
* characters, option delimiters, or value delimiters. Values are
|
|
174
|
+
* whitespace-encoded before transmission and are safe to populate from
|
|
175
|
+
* untrusted input.
|
|
171
176
|
*
|
|
172
177
|
* **IMPORTANT:** Partial dates (year-only or year-month) are only supported
|
|
173
178
|
* for XMP tags. Use group-prefixed tag names like `"XMP:CreateDate"` for
|
|
@@ -214,7 +219,9 @@ export declare class ExifTool {
|
|
|
214
219
|
* @param {string} file the file to strip of metadata
|
|
215
220
|
*
|
|
216
221
|
* @param {(keyof Tags | string)[]} opts.retain optional. If provided, this is
|
|
217
|
-
* a list of metadata keys to **not** delete.
|
|
222
|
+
* a list of metadata keys to **not** delete. Each entry must be a valid
|
|
223
|
+
* ExifTool tag reference; the promise rejects entries containing whitespace,
|
|
224
|
+
* control characters, option delimiters, or value delimiters.
|
|
218
225
|
*/
|
|
219
226
|
deleteAllTags(file: string, opts?: {
|
|
220
227
|
retain?: (keyof Tags | string)[];
|
|
@@ -259,6 +266,11 @@ export declare class ExifTool {
|
|
|
259
266
|
* `path/to/image.jpg` and write it to `dest` (which cannot exist and whose
|
|
260
267
|
* directory must already exist).
|
|
261
268
|
*
|
|
269
|
+
* @param tagname must be a valid ExifTool tag reference. The promise rejects
|
|
270
|
+
* tag names containing whitespace, control characters, option delimiters, or
|
|
271
|
+
* value delimiters, and rejects `src` or `dest` paths containing `\r`, `\n`,
|
|
272
|
+
* or `\0`.
|
|
273
|
+
*
|
|
262
274
|
* @return a `Promise<void>`
|
|
263
275
|
*
|
|
264
276
|
* @throws if the binary output cannot be written to `dest`.
|
|
@@ -270,6 +282,11 @@ export declare class ExifTool {
|
|
|
270
282
|
* a file, but if the payload associated to `tagname` is large, this can cause
|
|
271
283
|
* out-of-memory errors.
|
|
272
284
|
*
|
|
285
|
+
* @param tagname must be a valid ExifTool tag reference. The promise rejects
|
|
286
|
+
* tag names containing whitespace, control characters, option delimiters, or
|
|
287
|
+
* value delimiters, and rejects `imageFile` paths containing `\r`, `\n`, or
|
|
288
|
+
* `\0`.
|
|
289
|
+
*
|
|
273
290
|
* @return a `Promise<Buffer>`
|
|
274
291
|
*
|
|
275
292
|
* @throws if the file or tag is missing.
|
|
@@ -292,6 +309,8 @@ export declare class ExifTool {
|
|
|
292
309
|
* tags, allow ExifTool to apply heuristics to recover corrupt tags. See
|
|
293
310
|
* exiftool's `-F` flag.
|
|
294
311
|
* @return {Promise<void>} resolved after the outputFile has been written.
|
|
312
|
+
* @throws if `inputFile` or `outputFile` contain control characters (`\r`,
|
|
313
|
+
* `\n`, `\0`).
|
|
295
314
|
*/
|
|
296
315
|
rewriteAllTags(inputFile: string, outputFile: string, opts?: {
|
|
297
316
|
allowMakerNoteRepair?: boolean;
|
package/dist/ExifTool.js
CHANGED
|
@@ -36,7 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.exiftool = exports.ExifTool = exports.WriteTaskOptionFields = exports.DefaultWriteTaskOptions = exports.zoneToShortOffset = exports.validTzOffsetMinutes = exports.ValidTimezoneOffsets = exports.UnsetZoneOffsetMinutes = exports.UnsetZoneName = exports.UnsetZone = exports.TimezoneOffsetTagnames = exports.TimezoneOffsetRE = exports.parseTimezoneOffsetToMinutes = exports.parseTimezoneOffsetMatch = exports.offsetMinutesToZoneName = exports.normalizeZone = exports.isZoneValid = exports.isZoneUnset = exports.isZone = exports.isUTC = exports.inferLikelyOffsetMinutes = exports.extractZone = exports.extractTzOffsetFromUTCOffset = exports.extractTzOffsetFromTags = exports.equivalentZones = exports.defaultVideosToUTC = exports.ArchaicTimezoneOffsets = exports.TagDescriptions = exports.strEnum = exports.Settings = exports.Setting = exports.DefaultReadTaskOptions = exports.DefaultReadRawTaskOptions = exports.parseJSON = exports.isGeolocationTag = exports.GeolocationTagNames = exports.exiftoolPath = exports.ExifToolTask = exports.ExifTime = exports.ExifDateTime = exports.ExifDate = exports.DefaultMaxProcs = exports.DefaultExiftoolArgs = exports.DefaultExifToolOptions = exports.CapturedAtTagNames = exports.BinaryField = exports.retryOnReject = void 0;
|
|
39
|
+
exports.exiftool = exports.ExifTool = exports.ImageHashTypes = exports.WriteTaskOptionFields = exports.DefaultWriteTaskOptions = exports.zoneToShortOffset = exports.validTzOffsetMinutes = exports.ValidTimezoneOffsets = exports.UnsetZoneOffsetMinutes = exports.UnsetZoneName = exports.UnsetZone = exports.TimezoneOffsetTagnames = exports.TimezoneOffsetRE = exports.parseTimezoneOffsetToMinutes = exports.parseTimezoneOffsetMatch = exports.offsetMinutesToZoneName = exports.normalizeZone = exports.isZoneValid = exports.isZoneUnset = exports.isZone = exports.isUTC = exports.inferLikelyOffsetMinutes = exports.extractZone = exports.extractTzOffsetFromUTCOffset = exports.extractTzOffsetFromTags = exports.equivalentZones = exports.defaultVideosToUTC = exports.ArchaicTimezoneOffsets = exports.TagDescriptions = exports.strEnum = exports.Settings = exports.Setting = exports.DefaultReadTaskOptions = exports.DefaultReadRawTaskOptions = exports.parseJSON = exports.isGeolocationTag = exports.GeolocationTagNames = exports.exiftoolPath = exports.ExifToolTask = exports.ExifTime = exports.ExifDateTime = exports.ExifDate = exports.DefaultMaxProcs = exports.DefaultExiftoolArgs = exports.DefaultExifToolOptions = exports.CapturedAtTagNames = exports.BinaryField = exports.retryOnReject = void 0;
|
|
40
40
|
const bc = __importStar(require("batch-cluster"));
|
|
41
41
|
const _cp = __importStar(require("node:child_process"));
|
|
42
42
|
const _fs = __importStar(require("node:fs"));
|
|
@@ -58,6 +58,7 @@ const ReadTask_1 = require("./ReadTask");
|
|
|
58
58
|
const RewriteAllTagsTask_1 = require("./RewriteAllTagsTask");
|
|
59
59
|
const Settings_1 = require("./Settings");
|
|
60
60
|
const String_1 = require("./String");
|
|
61
|
+
const TagNameValidation_1 = require("./TagNameValidation");
|
|
61
62
|
const VersionTask_1 = require("./VersionTask");
|
|
62
63
|
const Which_1 = require("./Which");
|
|
63
64
|
const WriteTask_1 = require("./WriteTask");
|
|
@@ -126,6 +127,8 @@ Object.defineProperty(exports, "zoneToShortOffset", { enumerable: true, get: fun
|
|
|
126
127
|
var WriteTask_2 = require("./WriteTask");
|
|
127
128
|
Object.defineProperty(exports, "DefaultWriteTaskOptions", { enumerable: true, get: function () { return WriteTask_2.DefaultWriteTaskOptions; } });
|
|
128
129
|
Object.defineProperty(exports, "WriteTaskOptionFields", { enumerable: true, get: function () { return WriteTask_2.WriteTaskOptionFields; } });
|
|
130
|
+
var ExifToolOptions_2 = require("./ExifToolOptions");
|
|
131
|
+
Object.defineProperty(exports, "ImageHashTypes", { enumerable: true, get: function () { return ExifToolOptions_2.ImageHashTypes; } });
|
|
129
132
|
/**
|
|
130
133
|
* This is the hardcoded path in the exiftool shebang line (#!/usr/bin/perl).
|
|
131
134
|
*
|
|
@@ -261,9 +264,8 @@ class ExifTool {
|
|
|
261
264
|
/**
|
|
262
265
|
* Write the given `tags` to `file`.
|
|
263
266
|
*
|
|
264
|
-
*
|
|
265
|
-
*
|
|
266
|
-
* being written to.
|
|
267
|
+
* Tag keys are validated before being sent to ExifTool. Tag values are
|
|
268
|
+
* whitespace-encoded before transmission.
|
|
267
269
|
*
|
|
268
270
|
* **IMPORTANT:** Partial dates (year-only or year-month) are only supported
|
|
269
271
|
* for XMP tags. Use group-prefixed tag names like `"XMP:CreateDate"` for
|
|
@@ -305,11 +307,14 @@ class ExifTool {
|
|
|
305
307
|
* @param {string} file the file to strip of metadata
|
|
306
308
|
*
|
|
307
309
|
* @param {(keyof Tags | string)[]} opts.retain optional. If provided, this is
|
|
308
|
-
* a list of metadata keys to **not** delete.
|
|
310
|
+
* a list of metadata keys to **not** delete. Each entry must be a valid
|
|
311
|
+
* ExifTool tag reference; the promise rejects entries containing whitespace,
|
|
312
|
+
* control characters, option delimiters, or value delimiters.
|
|
309
313
|
*/
|
|
310
|
-
deleteAllTags(file, opts) {
|
|
314
|
+
async deleteAllTags(file, opts) {
|
|
311
315
|
const writeArgs = [...DeleteAllTagsArgs_1.DeleteAllTagsArgs];
|
|
312
316
|
for (const ea of opts?.retain ?? []) {
|
|
317
|
+
(0, TagNameValidation_1.validateTagName)(ea, "retain tag name");
|
|
313
318
|
writeArgs.push(`-${ea}<${ea}`);
|
|
314
319
|
}
|
|
315
320
|
return this.write(file, {}, { ...(0, Object_1.omit)(opts ?? {}, "retain"), writeArgs });
|
|
@@ -360,6 +365,11 @@ class ExifTool {
|
|
|
360
365
|
* `path/to/image.jpg` and write it to `dest` (which cannot exist and whose
|
|
361
366
|
* directory must already exist).
|
|
362
367
|
*
|
|
368
|
+
* @param tagname must be a valid ExifTool tag reference. The promise rejects
|
|
369
|
+
* tag names containing whitespace, control characters, option delimiters, or
|
|
370
|
+
* value delimiters, and rejects `src` or `dest` paths containing `\r`, `\n`,
|
|
371
|
+
* or `\0`.
|
|
372
|
+
*
|
|
363
373
|
* @return a `Promise<void>`
|
|
364
374
|
*
|
|
365
375
|
* @throws if the binary output cannot be written to `dest`.
|
|
@@ -381,6 +391,11 @@ class ExifTool {
|
|
|
381
391
|
* a file, but if the payload associated to `tagname` is large, this can cause
|
|
382
392
|
* out-of-memory errors.
|
|
383
393
|
*
|
|
394
|
+
* @param tagname must be a valid ExifTool tag reference. The promise rejects
|
|
395
|
+
* tag names containing whitespace, control characters, option delimiters, or
|
|
396
|
+
* value delimiters, and rejects `imageFile` paths containing `\r`, `\n`, or
|
|
397
|
+
* `\0`.
|
|
398
|
+
*
|
|
384
399
|
* @return a `Promise<Buffer>`
|
|
385
400
|
*
|
|
386
401
|
* @throws if the file or tag is missing.
|
|
@@ -417,6 +432,8 @@ class ExifTool {
|
|
|
417
432
|
* tags, allow ExifTool to apply heuristics to recover corrupt tags. See
|
|
418
433
|
* exiftool's `-F` flag.
|
|
419
434
|
* @return {Promise<void>} resolved after the outputFile has been written.
|
|
435
|
+
* @throws if `inputFile` or `outputFile` contain control characters (`\r`,
|
|
436
|
+
* `\n`, `\0`).
|
|
420
437
|
*/
|
|
421
438
|
rewriteAllTags(inputFile, outputFile, opts) {
|
|
422
439
|
return this.enqueueTask(() => RewriteAllTagsTask_1.RewriteAllTagsTask.for(inputFile, outputFile, {
|
package/dist/ExifTool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExifTool.js","sourceRoot":"","sources":["../src/ExifTool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ExifTool.js","sourceRoot":"","sources":["../src/ExifTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import * as bc from "batch-cluster";
|
|
2
2
|
import { geoTz } from "./GeoTz";
|
|
3
3
|
import { Maybe } from "./Maybe";
|
|
4
|
+
import { StrEnum, StrEnumKeys } from "./StrEnum";
|
|
4
5
|
import { Tags } from "./Tags";
|
|
6
|
+
export declare const ImageHashTypes: StrEnum<"MD5" | "SHA256" | "SHA512">;
|
|
7
|
+
export type ImageHashType = StrEnumKeys<typeof ImageHashTypes>;
|
|
5
8
|
/**
|
|
6
9
|
* Options for the {@link ExifTool} constructor.
|
|
7
10
|
*
|
|
@@ -105,6 +108,10 @@ export interface ExifToolOptions extends bc.BatchClusterOptions, bc.BatchProcess
|
|
|
105
108
|
* If you're using tag values only for human consumption, you may want to
|
|
106
109
|
* leave this blank.
|
|
107
110
|
*
|
|
111
|
+
* Each entry must be a valid ExifTool tag reference; the read promise rejects
|
|
112
|
+
* entries containing whitespace, control characters, option delimiters, or
|
|
113
|
+
* value delimiters.
|
|
114
|
+
*
|
|
108
115
|
* @default `["*Duration*", "GPSAltitude", "GPSLatitude", "GPSLongitude", "GPSPosition", "GeolocationPosition", "Orientation"]`
|
|
109
116
|
*/
|
|
110
117
|
numericTags: string[];
|
|
@@ -118,7 +125,7 @@ export interface ExifToolOptions extends bc.BatchClusterOptions, bc.BatchProcess
|
|
|
118
125
|
*
|
|
119
126
|
* @default false (disabled, as it adds ~20ms of overhead to every read)
|
|
120
127
|
*/
|
|
121
|
-
imageHashType: false |
|
|
128
|
+
imageHashType: false | ImageHashType;
|
|
122
129
|
/**
|
|
123
130
|
* @deprecated Use `imageHashType` instead.
|
|
124
131
|
*/
|
|
@@ -276,6 +283,11 @@ export interface ExifToolOptions extends bc.BatchClusterOptions, bc.BatchProcess
|
|
|
276
283
|
* to the ExifTool constructor can be overridden in the call to
|
|
277
284
|
* {@link ExifTool.read}.
|
|
278
285
|
*
|
|
286
|
+
* **Security:** entries are passed through to the underlying `exiftool`
|
|
287
|
+
* process verbatim. Never pass attacker-controlled strings here. The
|
|
288
|
+
* library rejects any entry containing `\r`, `\n`, or `\0` as a
|
|
289
|
+
* defense-in-depth measure, but provides no other sanitization.
|
|
290
|
+
*
|
|
279
291
|
* @default `["-fast"]`
|
|
280
292
|
*/
|
|
281
293
|
readArgs: string[];
|
|
@@ -284,6 +296,11 @@ export interface ExifToolOptions extends bc.BatchClusterOptions, bc.BatchProcess
|
|
|
284
296
|
* tasks, like `["-overwrite_original"]`. The value provided to the ExifTool
|
|
285
297
|
* constructor can be overridden in the call to {@link ExifTool.write}.
|
|
286
298
|
*
|
|
299
|
+
* **Security:** entries are passed through to the underlying `exiftool`
|
|
300
|
+
* process verbatim. Never pass attacker-controlled strings here. The
|
|
301
|
+
* library rejects any entry containing `\r`, `\n`, or `\0` as a
|
|
302
|
+
* defense-in-depth measure, but provides no other sanitization.
|
|
303
|
+
*
|
|
287
304
|
* @default `[]`
|
|
288
305
|
*/
|
|
289
306
|
writeArgs: string[];
|
package/dist/ExifToolOptions.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ImageHashTypes = void 0;
|
|
3
4
|
exports.handleDeprecatedOptions = handleDeprecatedOptions;
|
|
5
|
+
const StrEnum_1 = require("./StrEnum");
|
|
6
|
+
exports.ImageHashTypes = (0, StrEnum_1.strEnum)("MD5", "SHA256", "SHA512");
|
|
4
7
|
function handleDeprecatedOptions(options) {
|
|
5
8
|
if (options.imageHashType == null && options.includeImageDataMD5 != null) {
|
|
6
9
|
options.imageHashType = options.includeImageDataMD5 ? "MD5" : false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExifToolOptions.js","sourceRoot":"","sources":["../src/ExifToolOptions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExifToolOptions.js","sourceRoot":"","sources":["../src/ExifToolOptions.ts"],"names":[],"mappings":";;;AAyZA,0DASC;AA/ZD,uCAA0D;AAG7C,QAAA,cAAc,GAAG,IAAA,iBAAO,EACnC,KAAK,EACL,QAAQ,EACR,QAAQ,CACsC,CAAC;AA+YjD,SAAgB,uBAAuB,CAIrC,OAAU;IACV,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI,IAAI,OAAO,CAAC,mBAAmB,IAAI,IAAI,EAAE,CAAC;QACzE,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/ExifToolTask.js
CHANGED
|
@@ -43,6 +43,18 @@ class ExifToolTask extends bc.Task {
|
|
|
43
43
|
options;
|
|
44
44
|
static renderCommand(args, options) {
|
|
45
45
|
const result = args.filter((ea) => !(0, String_1.blank)(ea));
|
|
46
|
+
// Defense-in-depth: exiftool is launched with `-stay_open True -@ -` so
|
|
47
|
+
// args are separated by newlines. Any \r \n or NUL inside an arg would
|
|
48
|
+
// split one arg into several — an argument-injection primitive. Per-site
|
|
49
|
+
// validators (see TagNameValidation) should prevent this upstream; this
|
|
50
|
+
// assertion catches regressions from any new interpolation site that
|
|
51
|
+
// forgets to validate.
|
|
52
|
+
for (const a of result) {
|
|
53
|
+
if (/[\r\n\0]/.test(a)) {
|
|
54
|
+
throw new Error("Internal error: argument contains control character: " +
|
|
55
|
+
JSON.stringify(a));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
46
58
|
if (options?.ignoreMinorErrors === true) {
|
|
47
59
|
result.push("-ignoreMinorErrors");
|
|
48
60
|
}
|
package/dist/ExifToolTask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExifToolTask.js","sourceRoot":"","sources":["../src/ExifToolTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAoC;AAEpC,2CAAwC;AAExC,qCAAuD;AAEvD,MAAM,qBAAqB,GAAG,2BAA2B,CAAC;AAI1D,MAAsB,YAAgB,SAAQ,EAAE,CAAC,IAAO;
|
|
1
|
+
{"version":3,"file":"ExifToolTask.js","sourceRoot":"","sources":["../src/ExifToolTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAoC;AAEpC,2CAAwC;AAExC,qCAAuD;AAEvD,MAAM,qBAAqB,GAAG,2BAA2B,CAAC;AAI1D,MAAsB,YAAgB,SAAQ,EAAE,CAAC,IAAO;IA4B3C;IACA;IA5BX,MAAM,CAAC,aAAa,CAAC,IAAc,EAAE,OAA6B;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,wEAAwE;QACxE,uEAAuE;QACvE,yEAAyE;QACzE,wEAAwE;QACxE,qEAAqE;QACrE,uBAAuB;QACvB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CACb,uDAAuD;oBACrD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CACpB,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,OAAO,EAAE,iBAAiB,KAAK,IAAI,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClC,CAAC;IAEQ,MAAM,GAAa,EAAE,CAAC;IACtB,QAAQ,GAAa,EAAE,CAAC;IAEjC,YACW,IAAc,EACd,OAA6B;QAEtC,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAC1E,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CACrC,CAAC;QALO,SAAI,GAAJ,IAAI,CAAU;QACd,YAAO,GAAP,OAAO,CAAsB;IAKxC,CAAC;IAEQ,QAAQ,CAAC,GAAoB;QACpC,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YAC/C,sEAAsE;YACtE,6BAA6B;YAC7B,wEAAwE;YACxE,WAAW;YACX,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,MAA0B,EAAE,MAAe;QACjE,IAAI,KAAmB,CAAC;QACxB,IAAI,IAAA,iBAAQ,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,KAAK,MAAM,IAAI,IAAI,IAAA,mBAAU,EAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC5C,IAAI,IAAA,qBAAS,EAAC,IAAI,CAAC,EAAE,CAAC;oBACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;qBAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACvB,2CAA2C;oBAC3C,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;CAGF;AAhED,oCAgEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const _chai_spec_1 = require("./_chai.spec");
|
|
4
|
+
const ExifToolTask_1 = require("./ExifToolTask");
|
|
5
|
+
describe("ExifToolTask.renderCommand()", () => {
|
|
6
|
+
it("joins non-blank args with newlines and appends -execute", () => {
|
|
7
|
+
const cmd = ExifToolTask_1.ExifToolTask.renderCommand(["-Artist=me", "file.jpg"]);
|
|
8
|
+
(0, _chai_spec_1.expect)(cmd).to.eql("-Artist=me\nfile.jpg\n-execute\n");
|
|
9
|
+
});
|
|
10
|
+
it("appends -ignoreMinorErrors when option set", () => {
|
|
11
|
+
const cmd = ExifToolTask_1.ExifToolTask.renderCommand(["-Artist=me", "file.jpg"], {
|
|
12
|
+
ignoreMinorErrors: true,
|
|
13
|
+
});
|
|
14
|
+
(0, _chai_spec_1.expect)(cmd).to.eql("-Artist=me\nfile.jpg\n-ignoreMinorErrors\n-execute\n");
|
|
15
|
+
});
|
|
16
|
+
describe("defense-in-depth control-character check", () => {
|
|
17
|
+
it("throws if any arg contains a newline", () => {
|
|
18
|
+
(0, _chai_spec_1.expect)(() => ExifToolTask_1.ExifToolTask.renderCommand(["-Artist\n-o\n../exploit=x", "file.jpg"])).to.throw(/control character/);
|
|
19
|
+
});
|
|
20
|
+
it("throws if any arg contains a carriage return", () => {
|
|
21
|
+
(0, _chai_spec_1.expect)(() => ExifToolTask_1.ExifToolTask.renderCommand(["-Artist\r=x", "file.jpg"])).to.throw(/control character/);
|
|
22
|
+
});
|
|
23
|
+
it("throws if any arg contains a NUL byte", () => {
|
|
24
|
+
(0, _chai_spec_1.expect)(() => ExifToolTask_1.ExifToolTask.renderCommand(["-Artist\0=x", "file.jpg"])).to.throw(/control character/);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=ExifToolTask.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExifToolTask.spec.js","sourceRoot":"","sources":["../src/ExifToolTask.spec.ts"],"names":[],"mappings":";;AAAA,6CAAsC;AACtC,iDAA8C;AAE9C,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,GAAG,GAAG,2BAAY,CAAC,aAAa,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;QACnE,IAAA,mBAAM,EAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,GAAG,GAAG,2BAAY,CAAC,aAAa,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE;YACjE,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;QACH,IAAA,mBAAM,EAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACxD,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,IAAA,mBAAM,EAAC,GAAG,EAAE,CACV,2BAAY,CAAC,aAAa,CAAC,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC,CACtE,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,IAAA,mBAAM,EAAC,GAAG,EAAE,CACV,2BAAY,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CACxD,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,IAAA,mBAAM,EAAC,GAAG,EAAE,CACV,2BAAY,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CACxD,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/ReadRawTask.spec.js
CHANGED
|
@@ -31,5 +31,16 @@ describe("ReadRawTask", () => {
|
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
33
|
});
|
|
34
|
+
// Filename arguments to readRaw rely on the defense-in-depth
|
|
35
|
+
// control-character check in ExifToolTask.renderCommand. These tests
|
|
36
|
+
// pin that safety net.
|
|
37
|
+
describe("argument-injection hardening", () => {
|
|
38
|
+
it("rejects filename containing a newline (defense-in-depth)", async () => {
|
|
39
|
+
return (0, _chai_spec_1.expect)(ExifTool_1.exiftool.readRaw("input.jpg\n-p\n/etc/passwd\n-w!\nleak.txt")).to.be.rejectedWith(/control character/);
|
|
40
|
+
});
|
|
41
|
+
it("rejects filename containing a NUL byte (defense-in-depth)", async () => {
|
|
42
|
+
return (0, _chai_spec_1.expect)(ExifTool_1.exiftool.readRaw("input.jpg\0-p\0/etc/passwd")).to.be.rejectedWith(/control character/);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
34
45
|
});
|
|
35
46
|
//# sourceMappingURL=ReadRawTask.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadRawTask.spec.js","sourceRoot":"","sources":["../src/ReadRawTask.spec.ts"],"names":[],"mappings":";;;;;AAAA,+CAA4C;AAC5C,0DAA6B;AAC7B,yCAAsC;AACtC,6CAQsB;AAEtB,KAAK,CAAC,GAAG,EAAE,CAAC,IAAA,gBAAG,EAAC,mBAAQ,CAAC,CAAC,CAAC;AAE3B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,4BAAe,EAAE,CAAC;YAC5C,EAAE,CAAC,aAAa,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE;gBAClC,IAAA,mBAAM,EAAC,mBAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/C,MAAM,QAAQ,GAAG,GAAG,GAAG,MAAM,CAAC;gBAC9B,MAAM,IAAI,GAAG,mBAAI,CAAC,IAAI,CAAC,IAAA,mBAAM,GAAE,EAAE,QAAQ,CAAC,CAAC;gBAC3C,MAAM,IAAA,mBAAM,EAAC,IAAA,mBAAM,GAAE,CAAC,CAAC;gBACvB,MAAM,IAAA,mBAAQ,EAAC,mBAAI,CAAC,IAAI,CAAC,oBAAO,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC;gBACvD,MAAM,CAAC,GAAG,MAAM,mBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAA,mBAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC;oBACzB,QAAQ,EAAE,YAAY;oBACtB,QAAQ;oBACR,gBAAgB,EAAE,yBAAyB;oBAC3C,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,eAAe;oBACtB,gBAAgB,EAAE,mCAAmC;oBACrD,cAAc,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC;oBAC7C,KAAK,EAAE,+BAAkB;iBAC1B,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"ReadRawTask.spec.js","sourceRoot":"","sources":["../src/ReadRawTask.spec.ts"],"names":[],"mappings":";;;;;AAAA,+CAA4C;AAC5C,0DAA6B;AAC7B,yCAAsC;AACtC,6CAQsB;AAEtB,KAAK,CAAC,GAAG,EAAE,CAAC,IAAA,gBAAG,EAAC,mBAAQ,CAAC,CAAC,CAAC;AAE3B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,4BAAe,EAAE,CAAC;YAC5C,EAAE,CAAC,aAAa,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE;gBAClC,IAAA,mBAAM,EAAC,mBAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/C,MAAM,QAAQ,GAAG,GAAG,GAAG,MAAM,CAAC;gBAC9B,MAAM,IAAI,GAAG,mBAAI,CAAC,IAAI,CAAC,IAAA,mBAAM,GAAE,EAAE,QAAQ,CAAC,CAAC;gBAC3C,MAAM,IAAA,mBAAM,EAAC,IAAA,mBAAM,GAAE,CAAC,CAAC;gBACvB,MAAM,IAAA,mBAAQ,EAAC,mBAAI,CAAC,IAAI,CAAC,oBAAO,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC;gBACvD,MAAM,CAAC,GAAG,MAAM,mBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAA,mBAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC;oBACzB,QAAQ,EAAE,YAAY;oBACtB,QAAQ;oBACR,gBAAgB,EAAE,yBAAyB;oBAC3C,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,eAAe;oBACtB,gBAAgB,EAAE,mCAAmC;oBACrD,cAAc,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC;oBAC7C,KAAK,EAAE,+BAAkB;iBAC1B,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,6DAA6D;IAC7D,qEAAqE;IACrE,uBAAuB;IACvB,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC5C,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,OAAO,IAAA,mBAAM,EACX,mBAAQ,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAC9D,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,OAAO,IAAA,mBAAM,EACX,mBAAQ,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAC/C,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/ReadTask.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export declare const ReadTaskOptionFields: ["adjustTimeZoneIfDaylightSavings", "
|
|
|
5
5
|
export declare function nullish(s: unknown): s is undefined;
|
|
6
6
|
export declare const DefaultReadTaskOptions: {
|
|
7
7
|
readonly includeImageDataMD5: boolean | undefined;
|
|
8
|
-
readonly imageHashType: false | "
|
|
8
|
+
readonly imageHashType: false | import("./ExifToolOptions").ImageHashType;
|
|
9
9
|
readonly useMWG: boolean;
|
|
10
10
|
readonly numericTags: string[];
|
|
11
11
|
readonly defaultVideosToUTC: boolean;
|
package/dist/ReadTask.js
CHANGED
|
@@ -56,6 +56,7 @@ const Object_1 = require("./Object");
|
|
|
56
56
|
const OnlyZerosRE_1 = require("./OnlyZerosRE");
|
|
57
57
|
const Pick_1 = require("./Pick");
|
|
58
58
|
const String_1 = require("./String");
|
|
59
|
+
const TagNameValidation_1 = require("./TagNameValidation");
|
|
59
60
|
const Timezones_1 = require("./Timezones");
|
|
60
61
|
/**
|
|
61
62
|
* tag names we don't need to muck with, but name conventions (like including
|
|
@@ -137,6 +138,10 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
|
|
|
137
138
|
args.push("-use", "MWG");
|
|
138
139
|
}
|
|
139
140
|
if (opts.imageHashType != null && opts.imageHashType !== false) {
|
|
141
|
+
if (!ExifToolOptions_1.ImageHashTypes.includes(opts.imageHashType)) {
|
|
142
|
+
throw new Error(`Invalid imageHashType: ${JSON.stringify(opts.imageHashType)}. ` +
|
|
143
|
+
`Expected false or one of ${ExifToolOptions_1.ImageHashTypes.values.join(", ")}.`);
|
|
144
|
+
}
|
|
140
145
|
// See https://exiftool.org/forum/index.php?topic=14706.msg79218#msg79218
|
|
141
146
|
args.push("-api", "requesttags=imagedatahash");
|
|
142
147
|
args.push("-api", "imagehashtype=" + opts.imageHashType);
|
|
@@ -149,7 +154,10 @@ class ReadTask extends ExifToolTask_1.ExifToolTask {
|
|
|
149
154
|
}
|
|
150
155
|
// IMPORTANT: "-all" must be after numeric tag references, as the first
|
|
151
156
|
// reference in wins
|
|
152
|
-
|
|
157
|
+
for (const ea of opts.numericTags) {
|
|
158
|
+
(0, TagNameValidation_1.validateTagName)(ea, "numericTags entry");
|
|
159
|
+
args.push("-" + ea + "#");
|
|
160
|
+
}
|
|
153
161
|
// We have to add a -all or else we'll only get the numericTags. sad.
|
|
154
162
|
// TODO: Do you need -xmp:all, -all, or -all:all? Is -* better?
|
|
155
163
|
args.push("-all", sourceFile);
|