Skip to content

Commit 93a22f5

Browse files
committed
fix: validate dataset parameter to prevent search crashes
- Add validation for missing/invalid dataset parameter in search controller - Return 400 Bad Request instead of crashing with 'Search missing match aggregation' - Prevents unhandled rejection when /api/search called without valid dataset query parameter Valid datasets: Document, Project, List, Organization, etc. (all schemaTypes constants)
1 parent c1fd674 commit 93a22f5

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

api/controllers/search.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,17 @@ const executeQuery = async function (args, res) {
164164
return Actions.sendResponse(res, 400, { });
165165
}
166166

167+
// Validate dataset parameter
168+
if (!dataset) {
169+
defaultLog.error('Missing required parameter: dataset');
170+
return Actions.sendResponse(res, 400, { error: 'Missing required parameter: dataset' });
171+
}
172+
const validDatasets = Object.values(constants);
173+
if (!validDatasets.includes(dataset)) {
174+
defaultLog.error('Invalid dataset:', dataset);
175+
return Actions.sendResponse(res, 400, { error: `Invalid dataset: ${dataset}. Must be one of: ${validDatasets.join(', ')}` });
176+
}
177+
167178
await Utils.recordAction('Search', keywords, args.swagger.params.auth_payload ? args.swagger.params.auth_payload.preferred_username : 'public');
168179

169180
let sortDirection = undefined;

0 commit comments

Comments
 (0)