SRC plus: allow only ascii names, pkg update

This commit is contained in:
MichaelDvP
2025-10-17 10:55:37 +02:00
parent d92361a8bb
commit f0d162554b
3 changed files with 59 additions and 50 deletions

View File

@@ -49,14 +49,14 @@
"@preact/compat": "^18.3.1", "@preact/compat": "^18.3.1",
"@preact/preset-vite": "^2.10.2", "@preact/preset-vite": "^2.10.2",
"@trivago/prettier-plugin-sort-imports": "^5.2.2", "@trivago/prettier-plugin-sort-imports": "^5.2.2",
"@types/node": "^24.7.2", "@types/node": "^24.8.1",
"@types/react": "^19.2.2", "@types/react": "^19.2.2",
"@types/react-dom": "^19.2.2", "@types/react-dom": "^19.2.2",
"concurrently": "^9.2.1", "concurrently": "^9.2.1",
"eslint": "^9.37.0", "eslint": "^9.37.0",
"eslint-config-prettier": "^10.1.8", "eslint-config-prettier": "^10.1.8",
"prettier": "^3.6.2", "prettier": "^3.6.2",
"rollup-plugin-visualizer": "^6.0.4", "rollup-plugin-visualizer": "^6.0.5",
"terser": "^5.44.0", "terser": "^5.44.0",
"typescript-eslint": "^8.46.1", "typescript-eslint": "^8.46.1",
"vite": "^7.1.10", "vite": "^7.1.10",

View File

@@ -80,13 +80,13 @@ importers:
version: 18.3.1(preact@10.27.2) version: 18.3.1(preact@10.27.2)
'@preact/preset-vite': '@preact/preset-vite':
specifier: ^2.10.2 specifier: ^2.10.2
version: 2.10.2(@babel/core@7.28.4)(preact@10.27.2)(vite@7.1.10(@types/node@24.7.2)(terser@5.44.0)) version: 2.10.2(@babel/core@7.28.4)(preact@10.27.2)(vite@7.1.10(@types/node@24.8.1)(terser@5.44.0))
'@trivago/prettier-plugin-sort-imports': '@trivago/prettier-plugin-sort-imports':
specifier: ^5.2.2 specifier: ^5.2.2
version: 5.2.2(prettier@3.6.2) version: 5.2.2(prettier@3.6.2)
'@types/node': '@types/node':
specifier: ^24.7.2 specifier: ^24.8.1
version: 24.7.2 version: 24.8.1
'@types/react': '@types/react':
specifier: ^19.2.2 specifier: ^19.2.2
version: 19.2.2 version: 19.2.2
@@ -106,8 +106,8 @@ importers:
specifier: ^3.6.2 specifier: ^3.6.2
version: 3.6.2 version: 3.6.2
rollup-plugin-visualizer: rollup-plugin-visualizer:
specifier: ^6.0.4 specifier: ^6.0.5
version: 6.0.4(rollup@4.52.4) version: 6.0.5(rollup@4.52.4)
terser: terser:
specifier: ^5.44.0 specifier: ^5.44.0
version: 5.44.0 version: 5.44.0
@@ -116,13 +116,13 @@ importers:
version: 8.46.1(eslint@9.37.0)(typescript@5.9.3) version: 8.46.1(eslint@9.37.0)(typescript@5.9.3)
vite: vite:
specifier: ^7.1.10 specifier: ^7.1.10
version: 7.1.10(@types/node@24.7.2)(terser@5.44.0) version: 7.1.10(@types/node@24.8.1)(terser@5.44.0)
vite-plugin-imagemin: vite-plugin-imagemin:
specifier: ^0.6.1 specifier: ^0.6.1
version: 0.6.1(vite@7.1.10(@types/node@24.7.2)(terser@5.44.0)) version: 0.6.1(vite@7.1.10(@types/node@24.8.1)(terser@5.44.0))
vite-tsconfig-paths: vite-tsconfig-paths:
specifier: ^5.1.4 specifier: ^5.1.4
version: 5.1.4(typescript@5.9.3)(vite@7.1.10(@types/node@24.7.2)(terser@5.44.0)) version: 5.1.4(typescript@5.9.3)(vite@7.1.10(@types/node@24.8.1)(terser@5.44.0))
packages: packages:
@@ -851,8 +851,8 @@ packages:
resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==}
deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed.
'@types/node@24.7.2': '@types/node@24.8.1':
resolution: {integrity: sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==} resolution: {integrity: sha512-alv65KGRadQVfVcG69MuB4IzdYVpRwMG/mq8KWOaoOdyY617P5ivaDiMCGOFDWD2sAn5Q0mR3mRtUOgm99hL9Q==}
'@types/parse-json@4.0.2': '@types/parse-json@4.0.2':
resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
@@ -1014,8 +1014,8 @@ packages:
base64-js@1.5.1: base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
baseline-browser-mapping@2.8.16: baseline-browser-mapping@2.8.17:
resolution: {integrity: sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==} resolution: {integrity: sha512-j5zJcx6golJYTG6c05LUZ3Z8Gi+M62zRT/ycz4Xq4iCOdpcxwg7ngEYD4KA0eWZC7U17qh/Smq8bYbACJ0ipBA==}
hasBin: true hasBin: true
bin-build@3.0.0: bin-build@3.0.0:
@@ -1104,8 +1104,8 @@ packages:
resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
caniuse-lite@1.0.30001750: caniuse-lite@1.0.30001751:
resolution: {integrity: sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==} resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==}
caw@2.0.1: caw@2.0.1:
resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==}
@@ -2238,8 +2238,8 @@ packages:
node-html-parser@6.1.13: node-html-parser@6.1.13:
resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==} resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==}
node-releases@2.0.23: node-releases@2.0.25:
resolution: {integrity: sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==} resolution: {integrity: sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA==}
normalize-package-data@2.5.0: normalize-package-data@2.5.0:
resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
@@ -2592,8 +2592,8 @@ packages:
deprecated: Rimraf versions prior to v4 are no longer supported deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true hasBin: true
rollup-plugin-visualizer@6.0.4: rollup-plugin-visualizer@6.0.5:
resolution: {integrity: sha512-q8Q7J/6YofkmaGW1sH/fPRAz37x/+pd7VBuaUU7lwvOS/YikuiiEU9jeb9PH8XHiq50XFrUsBbOxeAMYQ7KZkg==} resolution: {integrity: sha512-9+HlNgKCVbJDs8tVtjQ43US12eqaiHyyiLMdBwQ7vSZPiHMysGNo2E88TAp1si5wx8NAoYriI2A5kuKfIakmJg==}
engines: {node: '>=18'} engines: {node: '>=18'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@@ -3575,18 +3575,18 @@ snapshots:
dependencies: dependencies:
preact: 10.27.2 preact: 10.27.2
'@preact/preset-vite@2.10.2(@babel/core@7.28.4)(preact@10.27.2)(vite@7.1.10(@types/node@24.7.2)(terser@5.44.0))': '@preact/preset-vite@2.10.2(@babel/core@7.28.4)(preact@10.27.2)(vite@7.1.10(@types/node@24.8.1)(terser@5.44.0))':
dependencies: dependencies:
'@babel/core': 7.28.4 '@babel/core': 7.28.4
'@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4)
'@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.4) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.4)
'@prefresh/vite': 2.4.10(preact@10.27.2)(vite@7.1.10(@types/node@24.7.2)(terser@5.44.0)) '@prefresh/vite': 2.4.10(preact@10.27.2)(vite@7.1.10(@types/node@24.8.1)(terser@5.44.0))
'@rollup/pluginutils': 4.2.1 '@rollup/pluginutils': 4.2.1
babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.4) babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.4)
debug: 4.4.3 debug: 4.4.3
picocolors: 1.1.1 picocolors: 1.1.1
vite: 7.1.10(@types/node@24.7.2)(terser@5.44.0) vite: 7.1.10(@types/node@24.8.1)(terser@5.44.0)
vite-prerender-plugin: 0.5.12(vite@7.1.10(@types/node@24.7.2)(terser@5.44.0)) vite-prerender-plugin: 0.5.12(vite@7.1.10(@types/node@24.8.1)(terser@5.44.0))
transitivePeerDependencies: transitivePeerDependencies:
- preact - preact
- supports-color - supports-color
@@ -3599,7 +3599,7 @@ snapshots:
'@prefresh/utils@1.2.1': {} '@prefresh/utils@1.2.1': {}
'@prefresh/vite@2.4.10(preact@10.27.2)(vite@7.1.10(@types/node@24.7.2)(terser@5.44.0))': '@prefresh/vite@2.4.10(preact@10.27.2)(vite@7.1.10(@types/node@24.8.1)(terser@5.44.0))':
dependencies: dependencies:
'@babel/core': 7.28.4 '@babel/core': 7.28.4
'@prefresh/babel-plugin': 0.5.2 '@prefresh/babel-plugin': 0.5.2
@@ -3607,7 +3607,7 @@ snapshots:
'@prefresh/utils': 1.2.1 '@prefresh/utils': 1.2.1
'@rollup/pluginutils': 4.2.1 '@rollup/pluginutils': 4.2.1
preact: 10.27.2 preact: 10.27.2
vite: 7.1.10(@types/node@24.7.2)(terser@5.44.0) vite: 7.1.10(@types/node@24.8.1)(terser@5.44.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -3712,7 +3712,7 @@ snapshots:
'@types/glob@7.2.0': '@types/glob@7.2.0':
dependencies: dependencies:
'@types/minimatch': 6.0.0 '@types/minimatch': 6.0.0
'@types/node': 24.7.2 '@types/node': 24.8.1
'@types/imagemin-gifsicle@7.0.4': '@types/imagemin-gifsicle@7.0.4':
dependencies: dependencies:
@@ -3741,19 +3741,19 @@ snapshots:
'@types/imagemin@7.0.1': '@types/imagemin@7.0.1':
dependencies: dependencies:
'@types/node': 24.7.2 '@types/node': 24.8.1
'@types/json-schema@7.0.15': {} '@types/json-schema@7.0.15': {}
'@types/keyv@3.1.4': '@types/keyv@3.1.4':
dependencies: dependencies:
'@types/node': 24.7.2 '@types/node': 24.8.1
'@types/minimatch@6.0.0': '@types/minimatch@6.0.0':
dependencies: dependencies:
minimatch: 10.0.3 minimatch: 10.0.3
'@types/node@24.7.2': '@types/node@24.8.1':
dependencies: dependencies:
undici-types: 7.14.0 undici-types: 7.14.0
@@ -3775,11 +3775,11 @@ snapshots:
'@types/responselike@1.0.3': '@types/responselike@1.0.3':
dependencies: dependencies:
'@types/node': 24.7.2 '@types/node': 24.8.1
'@types/svgo@2.6.4': '@types/svgo@2.6.4':
dependencies: dependencies:
'@types/node': 24.7.2 '@types/node': 24.8.1
'@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3)': '@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3)':
dependencies: dependencies:
@@ -3936,7 +3936,7 @@ snapshots:
base64-js@1.5.1: {} base64-js@1.5.1: {}
baseline-browser-mapping@2.8.16: {} baseline-browser-mapping@2.8.17: {}
bin-build@3.0.0: bin-build@3.0.0:
dependencies: dependencies:
@@ -3993,10 +3993,10 @@ snapshots:
browserslist@4.26.3: browserslist@4.26.3:
dependencies: dependencies:
baseline-browser-mapping: 2.8.16 baseline-browser-mapping: 2.8.17
caniuse-lite: 1.0.30001750 caniuse-lite: 1.0.30001751
electron-to-chromium: 1.5.237 electron-to-chromium: 1.5.237
node-releases: 2.0.23 node-releases: 2.0.25
update-browserslist-db: 1.1.3(browserslist@4.26.3) update-browserslist-db: 1.1.3(browserslist@4.26.3)
buffer-alloc-unsafe@1.1.0: {} buffer-alloc-unsafe@1.1.0: {}
@@ -4053,7 +4053,7 @@ snapshots:
camelcase@2.1.1: {} camelcase@2.1.1: {}
caniuse-lite@1.0.30001750: {} caniuse-lite@1.0.30001751: {}
caw@2.0.1: caw@2.0.1:
dependencies: dependencies:
@@ -5263,7 +5263,7 @@ snapshots:
css-select: 5.2.2 css-select: 5.2.2
he: 1.2.0 he: 1.2.0
node-releases@2.0.23: {} node-releases@2.0.25: {}
normalize-package-data@2.5.0: normalize-package-data@2.5.0:
dependencies: dependencies:
@@ -5587,7 +5587,7 @@ snapshots:
dependencies: dependencies:
glob: 7.2.3 glob: 7.2.3
rollup-plugin-visualizer@6.0.4(rollup@4.52.4): rollup-plugin-visualizer@6.0.5(rollup@4.52.4):
dependencies: dependencies:
open: 8.4.2 open: 8.4.2
picomatch: 4.0.3 picomatch: 4.0.3
@@ -5936,7 +5936,7 @@ snapshots:
spdx-correct: 3.2.0 spdx-correct: 3.2.0
spdx-expression-parse: 3.0.1 spdx-expression-parse: 3.0.1
vite-plugin-imagemin@0.6.1(vite@7.1.10(@types/node@24.7.2)(terser@5.44.0)): vite-plugin-imagemin@0.6.1(vite@7.1.10(@types/node@24.8.1)(terser@5.44.0)):
dependencies: dependencies:
'@types/imagemin': 7.0.1 '@types/imagemin': 7.0.1
'@types/imagemin-gifsicle': 7.0.4 '@types/imagemin-gifsicle': 7.0.4
@@ -5961,11 +5961,11 @@ snapshots:
imagemin-webp: 6.1.0 imagemin-webp: 6.1.0
jpegtran-bin: 6.0.1 jpegtran-bin: 6.0.1
pathe: 0.2.0 pathe: 0.2.0
vite: 7.1.10(@types/node@24.7.2)(terser@5.44.0) vite: 7.1.10(@types/node@24.8.1)(terser@5.44.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
vite-prerender-plugin@0.5.12(vite@7.1.10(@types/node@24.7.2)(terser@5.44.0)): vite-prerender-plugin@0.5.12(vite@7.1.10(@types/node@24.8.1)(terser@5.44.0)):
dependencies: dependencies:
kolorist: 1.8.0 kolorist: 1.8.0
magic-string: 0.30.19 magic-string: 0.30.19
@@ -5973,20 +5973,20 @@ snapshots:
simple-code-frame: 1.3.0 simple-code-frame: 1.3.0
source-map: 0.7.6 source-map: 0.7.6
stack-trace: 1.0.0-pre2 stack-trace: 1.0.0-pre2
vite: 7.1.10(@types/node@24.7.2)(terser@5.44.0) vite: 7.1.10(@types/node@24.8.1)(terser@5.44.0)
vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.1.10(@types/node@24.7.2)(terser@5.44.0)): vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.1.10(@types/node@24.8.1)(terser@5.44.0)):
dependencies: dependencies:
debug: 4.4.3 debug: 4.4.3
globrex: 0.1.2 globrex: 0.1.2
tsconfck: 3.1.6(typescript@5.9.3) tsconfck: 3.1.6(typescript@5.9.3)
optionalDependencies: optionalDependencies:
vite: 7.1.10(@types/node@24.7.2)(terser@5.44.0) vite: 7.1.10(@types/node@24.8.1)(terser@5.44.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
- typescript - typescript
vite@7.1.10(@types/node@24.7.2)(terser@5.44.0): vite@7.1.10(@types/node@24.8.1)(terser@5.44.0):
dependencies: dependencies:
esbuild: 0.25.11 esbuild: 0.25.11
fdir: 6.5.0(picomatch@4.0.3) fdir: 6.5.0(picomatch@4.0.3)
@@ -5995,7 +5995,7 @@ snapshots:
rollup: 4.52.4 rollup: 4.52.4
tinyglobby: 0.2.15 tinyglobby: 0.2.15
optionalDependencies: optionalDependencies:
'@types/node': 24.7.2 '@types/node': 24.8.1
fsevents: 2.3.3 fsevents: 2.3.3
terser: 5.44.0 terser: 5.44.0

View File

@@ -145,7 +145,8 @@ void Connect::process_roomThermostatName(std::shared_ptr<const Telegram> telegra
has_update(telegram, rc->icon_, 0); has_update(telegram, rc->icon_, 0);
for (uint8_t i = telegram->offset; i < telegram->message_length + telegram->offset && i < 100; i++) { for (uint8_t i = telegram->offset; i < telegram->message_length + telegram->offset && i < 100; i++) {
if ((i > 1) && (i % 2) == 0) { if ((i > 1) && (i % 2) == 0) {
rc->name_[(i - 2) / 2] = telegram->message_data[i - telegram->offset]; // replace ISOLatin1 characters with questionmark
rc->name_[(i - 2) / 2] = telegram->message_data[i - telegram->offset] & 0x80 ? '?' : telegram->message_data[i - telegram->offset];
} }
} }
rc->name_[50] = '\0'; // make sure name is terminated rc->name_[50] = '\0'; // make sure name is terminated
@@ -183,9 +184,14 @@ void Connect::process_roomThermostatData(std::shared_ptr<const Telegram> telegra
// schedule for all thermostats // schedule for all thermostats
void Connect::process_roomSchedule(std::shared_ptr<const Telegram> telegram) { void Connect::process_roomSchedule(std::shared_ptr<const Telegram> telegram) {
toggle_fetch(telegram->type_id, false); // fetch only once uint8_t length = ((telegram->offset + telegram->message_length) > 126) ? 126 - telegram->offset : telegram->message_length;
auto length = ((telegram->offset + telegram->message_length) > 126) ? 126 - telegram->offset : telegram->message_length;
memcpy(&schedule_[telegram->offset], telegram->message_data, length); memcpy(&schedule_[telegram->offset], telegram->message_data, length);
for (uint8_t c : schedule_) {
if (c == 0xFE) {
return;
}
}
toggle_fetch(telegram->type_id, false); // fetch only once if all is initialized
} }
// Settings: // Settings:
@@ -228,6 +234,9 @@ bool Connect::set_name(const char * value, const int8_t id) {
for (uint8_t i = 0; i < strlen(value) + 1; i++) { // include terminating '\0' for (uint8_t i = 0; i < strlen(value) + 1; i++) { // include terminating '\0'
data[2 * i] = 0; data[2 * i] = 0;
data[2 * i + 1] = value[i]; data[2 * i + 1] = value[i];
if (value[i] & 0x80) { // accept only ascii names
return false;
}
} }
uint8_t ofs = 0; uint8_t ofs = 0;
while (len > 0) { while (len > 0) {