Skip to content

Commit 693a608

Browse files
authored
Fix Security and Reliability issues on SonarQube (#1623)
* fix sonarqube issues
1 parent 3766850 commit 693a608

File tree

25 files changed

+181
-103
lines changed

25 files changed

+181
-103
lines changed

docs/api.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19046,6 +19046,7 @@ back into a JS integer.
1904619046
* [~disable(testName)](#module_JS API_ random utilities..disable)
1904719047
* [~collectJsonData(jsonFile)](#module_JS API_ random utilities..collectJsonData)
1904819048
* [~patternFormat(pattern, data)](#module_JS API_ random utilities..patternFormat)
19049+
* [~toErrorObject(err, message)](#module_JS API_ random utilities..toErrorObject) ⇒ <code>Error</code>
1904919050

1905019051
<a name="module_JS API_ random utilities..checksum"></a>
1905119052

@@ -19331,6 +19332,19 @@ For example, if pattern is "{a}" and data.a is 1, then this prints out "1".
1933119332
| pattern | <code>\*</code> |
1933219333
| data | <code>\*</code> |
1933319334

19335+
<a name="module_JS API_ random utilities..toErrorObject"></a>
19336+
19337+
### JS API: random utilities~toErrorObject(err, message) ⇒ <code>Error</code>
19338+
Wraps a non-error object into an Error object.
19339+
If message is provided, it will be used as the error message.
19340+
19341+
**Kind**: inner method of [<code>JS API: random utilities</code>](#module_JS API_ random utilities)
19342+
19343+
| Param | Type | Default |
19344+
| --- | --- | --- |
19345+
| err | <code>\*</code> | |
19346+
| message | <code>\*</code> | <code></code> |
19347+
1933419348
<a name="module_REST API_ various zcl utilities"></a>
1933519349

1933619350
## REST API: various zcl utilities

sonar-project.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,6 @@ sonar.javascript.lcov.reportPaths=jest-coverage/lcov.info,cypress-coverage/lcov.
1717
sonar.host.url=https://sonarqube.silabs.net
1818
sonar.token=put your token here which can be created from the above url
1919
# sonar.plsql.jdbc.url=test/.zap/test-server.sqlite
20+
21+
# To create a different branch or upload results to it, replace 'master' with your branch name.
22+
sonar.branch.name=master

src-electron/db/db-api.js

Lines changed: 39 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ function executeBeginTransaction(db, resolve, reject) {
4949
db.run('BEGIN TRANSACTION', [], function (err) {
5050
if (err) {
5151
env.logError('Failed to BEGIN TRANSACTION')
52-
reject(err)
52+
reject(util.toErrorObject(err))
5353
} else {
5454
env.logSql('Executed BEGIN TRANSACTION')
5555
resolve()
@@ -69,7 +69,11 @@ function delayBeginTransaction(db, resolve, reject) {
6969
if (inTransaction) {
7070
cnt++
7171
if (cnt > 100) {
72-
reject('Waited for 10s for transaction to relinquish, but it did not.')
72+
reject(
73+
util.toErrorObject(
74+
'Waited for 10s for transaction to relinquish, but it did not.'
75+
)
76+
)
7377
}
7478
} else {
7579
clearInterval(interval)
@@ -117,7 +121,7 @@ async function dbCommit(db) {
117121
db.run('COMMIT', [], function (err) {
118122
if (err) {
119123
env.logError('Failed to COMMIT')
120-
reject(err)
124+
reject(util.toErrorObject(err))
121125
} else {
122126
env.logSql('Executed COMMIT')
123127
inTransaction = false
@@ -149,7 +153,7 @@ async function dbRollback(db) {
149153
db.run('ROLLBACK', [], function (err) {
150154
if (err) {
151155
env.logError('Failed to ROLLBACK')
152-
reject(err)
156+
reject(util.toErrorObject(err))
153157
} else {
154158
env.logSql('Executed ROLLBACK')
155159
inTransaction = false
@@ -173,7 +177,7 @@ async function dbRemove(db, query, args) {
173177
db.run(query, args, function (err) {
174178
if (err) {
175179
env.logError(`Failed remove: ${query}: ${args}`)
176-
reject(err)
180+
reject(util.toErrorObject(err))
177181
} else {
178182
env.logSql('Executed remove', query, args)
179183
resolve(this.changes)
@@ -196,7 +200,7 @@ async function dbUpdate(db, query, args) {
196200
db.run(query, args, function (err) {
197201
if (err) {
198202
env.logError(`Failed update: ${query}: ${args}`)
199-
reject(err)
203+
reject(util.toErrorObject(err))
200204
} else {
201205
env.logSql('Executed update', query, args)
202206
resolve(this.changes)
@@ -219,7 +223,7 @@ async function dbInsert(db, query, args) {
219223
db.run(query, args, function (err) {
220224
if (err) {
221225
env.logError(`Failed insert: ${query}: ${args} : ${err}`)
222-
reject(err)
226+
reject(util.toErrorObject(err))
223227
} else {
224228
env.logSql('Executed insert', query, args)
225229
resolve(this.lastID)
@@ -242,7 +246,7 @@ async function dbAll(db, query, args) {
242246
db.all(query, args, (err, rows) => {
243247
if (err) {
244248
env.logError(`Failed all: ${query}: ${args} : ${err}`)
245-
reject(err)
249+
reject(util.toErrorObject(err))
246250
} else {
247251
env.logSql('Executed all', query, args)
248252
resolve(rows)
@@ -265,7 +269,7 @@ async function dbGet(db, query, args, reportError = true) {
265269
db.get(query, args, (err, row) => {
266270
if (err) {
267271
if (reportError) env.logError(`Failed get: ${query}: ${args} : ${err}`)
268-
reject(err)
272+
reject(util.toErrorObject(err))
269273
} else {
270274
env.logSql('Executed get', query, args)
271275
resolve(row)
@@ -287,19 +291,19 @@ async function dbMultiSelect(db, sql, arrayOfArrays) {
287291
env.logSql('Preparing select', sql, arrayOfArrays.length)
288292
let rows = []
289293
let statement = db.prepare(sql, function (err) {
290-
if (err) reject(err)
294+
if (err) reject(util.toErrorObject(err))
291295
for (const singleArray of arrayOfArrays) {
292296
statement.get(singleArray, (err2, row) => {
293297
if (err2) {
294-
reject(err2)
298+
reject(util.toErrorObject(err2))
295299
} else {
296300
rows.push(row)
297301
}
298302
})
299303
}
300304
statement.finalize((err3) => {
301305
if (err3) {
302-
reject(err3)
306+
reject(util.toErrorObject(err3))
303307
} else {
304308
resolve(rows)
305309
}
@@ -323,25 +327,32 @@ async function dbMultiInsert(db, sql, arrayOfArrays) {
323327
env.logSql('Preparing insert', sql, arrayOfArrays.length)
324328
let lastIds = []
325329
let statement = db.prepare(sql, function (err) {
326-
if (err)
327-
reject('Error while preparing sql statement: ' + sql + ', ' + err)
330+
if (err) {
331+
let errMessage =
332+
'Error while preparing sql statement: ' + sql + ', ' + err
333+
reject(util.toErrorObject(err, errMessage))
334+
}
328335
for (const singleArray of arrayOfArrays) {
329336
statement.run(singleArray, (err2) => {
330-
if (err2)
331-
reject(
337+
if (err2) {
338+
let err2Message =
332339
'Error while running sql statement: ' +
333-
sql +
334-
', values: ' +
335-
singleArray +
336-
', ' +
337-
err2
338-
)
340+
sql +
341+
', values: ' +
342+
singleArray +
343+
', ' +
344+
err2
345+
reject(util.toErrorObject(err2, err2Message))
346+
}
339347
lastIds.push(this.lastID)
340348
})
341349
}
342350
statement.finalize((err3) => {
343-
if (err3)
344-
reject('Error while finalizing sql statement: ' + sql + ', ' + err3)
351+
if (err3) {
352+
let err3Message =
353+
'Error while finalizing sql statement: ' + sql + ', ' + err3
354+
reject(util.toErrorObject(err3, err3Message))
355+
}
345356
resolve(lastIds)
346357
})
347358
})
@@ -362,7 +373,7 @@ async function closeDatabase(database) {
362373
return new Promise((resolve, reject) => {
363374
env.logSql('About to close database.')
364375
database.close((err) => {
365-
if (err) return reject(err)
376+
if (err) return reject(util.toErrorObject(err))
366377
env.logSql('Database is closed.')
367378
resolve()
368379
})
@@ -395,7 +406,7 @@ async function initRamDatabase() {
395406
return new Promise((resolve, reject) => {
396407
let db = new sqlite.Database(':memory:', (err) => {
397408
if (err) {
398-
reject(err)
409+
reject(util.toErrorObject(err))
399410
} else {
400411
env.logSql(`Connected to the RAM database.`)
401412
resolve(db)
@@ -416,7 +427,7 @@ async function initDatabase(sqlitePath) {
416427
return new Promise((resolve, reject) => {
417428
let db = new sqlite.Database(sqlitePath, (err) => {
418429
if (err) {
419-
reject(err)
430+
reject(util.toErrorObject(err))
420431
} else {
421432
env.logSql(`Connected to the database at: ${sqlitePath}`)
422433
resolve(db)
@@ -531,7 +542,7 @@ async function performSchemaLoad(db, schemaContent) {
531542
if (err) {
532543
env.logError('Failed to populate schema')
533544
env.logError(err)
534-
reject(err)
545+
reject(util.toErrorObject(err))
535546
}
536547
resolve()
537548
})

src-electron/db/query-config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ async function insertOrUpdateAttributeState(
230230
)
231231
// only set featureMap bit to 1 for mandatory features
232232
let featureMapBitsToBeEnabled = featuresOnEndpointTypeAndCluster
233-
.filter((f) => f.conformance == dbEnum.conformance.mandatory)
233+
.filter((f) => f.conformance == dbEnum.conformanceTag.mandatory)
234234
.map((f) => f.featureBit)
235235
featureMapBitsToBeEnabled.forEach(
236236
(featureBit) =>

src-electron/db/query-loader.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -796,7 +796,10 @@ async function insertClusterExtensions(db, packageId, knownPackages, data) {
796796
let pAttribute = insertAttributes(db, packageId, attributes)
797797
let pEvent = insertEvents(db, packageId, events)
798798
return Promise.all([pCommand, pAttribute, pEvent]).catch((err) => {
799-
if (err.includes('SQLITE_CONSTRAINT') && err.includes('UNIQUE')) {
799+
if (
800+
err.message.includes('SQLITE_CONSTRAINT') &&
801+
err.message.includes('UNIQUE')
802+
) {
800803
env.logDebug(
801804
`CRC match for file with package id ${packageId}, skipping parsing.`
802805
)

src-electron/generator/generation-engine.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -952,7 +952,9 @@ async function generateGenerationContent(genResult, timing = {}) {
952952
timing: timing,
953953
stats: {}
954954
}
955-
for (const f of Object.keys(genResult.content).sort()) {
955+
for (const f of Object.keys(genResult.content).sort((a, b) =>
956+
a.localeCompare(b)
957+
)) {
956958
out.content.push(f)
957959
}
958960
return Promise.resolve(JSON.stringify(out, null, 2))

src-electron/generator/matter/app/zap-templates/common/ClusterTestGeneration.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -617,7 +617,10 @@ function assertCommandOrAttributeOrEvent(context) {
617617
filterName = context.event;
618618
items = getEvents(context, clusterName);
619619
} else {
620-
printErrorAndExit(context, 'Unsupported command type: ', context);
620+
printErrorAndExit(
621+
context,
622+
`Unsupported command type: ${JSON.stringify(context)}`
623+
);
621624
}
622625

623626
return items.then((items) => {

src-electron/generator/matter/app/zap-templates/templates/app/helper.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,9 @@ function chip_endpoint_generated_commands_list(options) {
207207
}
208208
});
209209

210-
generatedCommands = [...new Set(generatedCommands)].sort();
210+
generatedCommands = [...new Set(generatedCommands)].sort((a, b) =>
211+
a.localeCompare(b)
212+
);
211213

212214
if (acceptedCommands.length > 0 || generatedCommands.length > 0) {
213215
ret.push({ text: ` /* ${c.comment} */\\` });

src-electron/generator/matter/controller/java/templates/helper.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,10 +121,7 @@ function asJniBasicType(type, useBoxedTypes) {
121121
return zclHelper.asUnderlyingZclType
122122
.call(this, type, options)
123123
.then((zclType) => {
124-
return convertBasicCTypeToJniType(
125-
ChipTypesHelper.asBasicType(zclType),
126-
false
127-
);
124+
return convertBasicCTypeToJniType(ChipTypesHelper.asBasicType(zclType));
128125
});
129126
}
130127

src-electron/generator/matter/darwin/Framework/CHIP/templates/helper.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -766,8 +766,7 @@ async function availabilityHelper(clusterName, language, options) {
766766
const provisionalRelease = findProvisionalRelease(
767767
this.global,
768768
clusterName,
769-
options,
770-
'provisional'
769+
options
771770
);
772771
if (!provisionalRelease) {
773772
console.log(
@@ -1007,7 +1006,7 @@ function findReleaseForPathOrAncestorAndSection(
10071006
const data = fetchAvailabilityData(global);
10081007
let path = makeAvailabilityPath(cluster, options);
10091008

1010-
while (path !== undefined) {
1009+
while (path != undefined) {
10111010
let foundRelease = findReleaseForPath(data, [section, ...path], options);
10121011
if (foundRelease !== undefined) {
10131012
return { release: foundRelease, path: path };
@@ -1134,7 +1133,7 @@ function isProvisional(cluster, options) {
11341133
return false;
11351134
}
11361135

1137-
while (path !== undefined) {
1136+
while (path != undefined) {
11381137
let comparisonStatus = compareIntroductionToReferenceRelease(
11391138
this.global,
11401139
path,

0 commit comments

Comments
 (0)