MCPcopy Create free account
hub / github.com/chartbrew/chartbrew / getImageTypeFromBuffer

Function getImageTypeFromBuffer

server/modules/logoUploadSecurity.js:54–93  ·  view source on GitHub ↗
(buffer)

Source from the content-addressed store, hash-verified

52};
53
54const getImageTypeFromBuffer = (buffer) => {
55 if (!Buffer.isBuffer(buffer) || buffer.length < 12) {
56 return null;
57 }
58
59 // PNG signature: 89 50 4E 47 0D 0A 1A 0A
60 if (buffer.length >= 8
61 && buffer[0] === 0x89
62 && buffer[1] === 0x50
63 && buffer[2] === 0x4E
64 && buffer[3] === 0x47
65 && buffer[4] === 0x0D
66 && buffer[5] === 0x0A
67 && buffer[6] === 0x1A
68 && buffer[7] === 0x0A
69 ) {
70 return "image/png";
71 }
72
73 // JPEG signature: FF D8 FF
74 if (buffer[0] === 0xFF && buffer[1] === 0xD8 && buffer[2] === 0xFF) {
75 return "image/jpeg";
76 }
77
78 // GIF signature: GIF87a / GIF89a
79 if (buffer.toString("ascii", 0, 6) === "GIF87a"
80 || buffer.toString("ascii", 0, 6) === "GIF89a"
81 ) {
82 return "image/gif";
83 }
84
85 // WEBP signature: RIFF....WEBP
86 if (buffer.toString("ascii", 0, 4) === "RIFF"
87 && buffer.toString("ascii", 8, 12) === "WEBP"
88 ) {
89 return "image/webp";
90 }
91
92 return null;
93};
94
95const isAllowedLogoMimeType = (mimeType) => {
96 const normalizedMimeType = normalizeMimeType(mimeType);

Callers 1

isValidLogoImageBufferFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected