补齐移动壳图片导出空内容边界
移动壳图片导出拒绝零字节 base64 内容 移动壳 HostBridge 测试覆盖图片导出空内容拒绝 移动壳配置检查反查图片导出字节边界
This commit is contained in:
@@ -1700,6 +1700,15 @@ assertMobileDocumentPickerBoundary(
|
||||
'MOBILE_AUDIO_DOCUMENT_PICKER_TYPES',
|
||||
);
|
||||
|
||||
const exportImageFileBody = extractFunctionBody(filesSource, 'exportImageFile');
|
||||
if (
|
||||
!exportImageFileBody.includes(
|
||||
'bytes <= 0 || bytes > HOST_BRIDGE_EXPORT_IMAGE_MAX_BYTES',
|
||||
)
|
||||
) {
|
||||
throw new Error('mobile shell image export must reject empty and oversized bytes');
|
||||
}
|
||||
|
||||
for (const [wrapperName, fileCall] of [
|
||||
['exportMobileHostBridgeTextFile', 'ok(request, await exportTextFile(request.payload))'],
|
||||
['importMobileHostBridgeTextFile', 'ok(request, await importTextFile())'],
|
||||
|
||||
@@ -1377,7 +1377,7 @@ describe('handleMobileHostBridgeMessage', () => {
|
||||
});
|
||||
});
|
||||
|
||||
test('file.exportImage 拒绝非图片 MIME 与超限内容', async () => {
|
||||
test('file.exportImage 拒绝非图片 MIME、空内容与超限内容', async () => {
|
||||
const unsupportedMime = await send(
|
||||
request('file.exportImage', {
|
||||
fileName: '分享卡.txt',
|
||||
@@ -1388,6 +1388,16 @@ describe('handleMobileHostBridgeMessage', () => {
|
||||
|
||||
expect(expectFailed(unsupportedMime).error.code).toBe('invalid_request');
|
||||
|
||||
const emptyImage = await send(
|
||||
request('file.exportImage', {
|
||||
fileName: '分享卡.png',
|
||||
base64Data: '',
|
||||
mimeType: 'image/png',
|
||||
}),
|
||||
);
|
||||
|
||||
expect(expectFailed(emptyImage).error.code).toBe('invalid_request');
|
||||
|
||||
const oversized = await send(
|
||||
request('file.exportImage', {
|
||||
fileName: '分享卡.png',
|
||||
|
||||
@@ -514,7 +514,7 @@ export async function exportImageFile(
|
||||
throw invalidRequest('base64Data is required');
|
||||
}
|
||||
const bytes = base64DecodedByteLength(base64Data);
|
||||
if (bytes > HOST_BRIDGE_EXPORT_IMAGE_MAX_BYTES) {
|
||||
if (bytes <= 0 || bytes > HOST_BRIDGE_EXPORT_IMAGE_MAX_BYTES) {
|
||||
throw invalidRequest('image exceeds file export size limit');
|
||||
}
|
||||
ensureImageBytesMatchMimeType(base64Data, mimeType as HostBridgeImageMimeType);
|
||||
|
||||
Reference in New Issue
Block a user