{"url":"https://api.github.com/repos/openSUSE/wicked/compare/version-0.6.78...version-0.6.79","html_url":"https://github.com/openSUSE/wicked/compare/version-0.6.78...version-0.6.79","permalink_url":"https://github.com/openSUSE/wicked/compare/openSUSE:5b8827a...openSUSE:6cb6987","diff_url":"https://github.com/openSUSE/wicked/compare/version-0.6.78...version-0.6.79.diff","patch_url":"https://github.com/openSUSE/wicked/compare/version-0.6.78...version-0.6.79.patch","base_commit":{"sha":"5b8827a8328677897ad584fe905f4043edddfe7b","node_id":"C_kwDOALs-EtoAKDViODgyN2E4MzI4Njc3ODk3YWQ1ODRmZTkwNWY0MDQzZWRkZGZlN2I","commit":{"author":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2025-01-08T08:30:25Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2025-01-08T08:30:25Z"},"message":"Merge pull request https://github.com/openSUSE/wicked/pull/1054\n\nversion 0.6.78","tree":{"sha":"217e4d8ab0f3d4a63e980afe5e19324e7c8bd22d","url":"https://api.github.com/repos/openSUSE/wicked/git/trees/217e4d8ab0f3d4a63e980afe5e19324e7c8bd22d"},"url":"https://api.github.com/repos/openSUSE/wicked/git/commits/5b8827a8328677897ad584fe905f4043edddfe7b","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJnfjehCRC1aQ7uu5UhlAAAVo8QAJuBj9hza1U/IlRlWqPGW02L\nfJmcnZoZ0W4jTIbPAJQzYyxFWSh/zYHeIxrvwS7Yr8TkMkKJFc/bKC1pSpvDR6+I\npgavogdL+oR6qFfVukmPHlGeGtTSs5+nnfd7mkT6yUsrhpQkNqmO4BjoNL1aN/E7\nJh/Gbpf/zkfXCd7GESDMHt/CT6msCJK7yribhwyksL3q6sB47yAU5D2VfQHPlg4Q\nwOM1FjFw/69L77o6jV2KRGdIhI02N9ifNboR2G5pagyclmXOgIMDcYNqlyL8Lt9C\ne9OxKrPTXzKX9gOvn0jN6akwEismlnYtvaCIxHx581jpiz4WDli4intFXfGki0HY\n6PF+zfO02WyPJXgSBY3L8Ka74w5blyXxr7m+l9kxcu6r5gWMXVbv5JDyhtflI98i\nBt0wp40Mxm+kaWkY8M1VBohLLjHilNg1xTGPg1Rl+q8OxJuA1T/mfMA8ardLOWy6\nfoDUdaVxb0psVPpSkfjwSyj8oOtjY8sZFICfRN7cmQ26+2BKv+AtUDUOhcpg0Lo2\nFls0yD70KArSu7rDm6D6l+KO+Iq/vkU1RYcLe8OYqkdzlorH1Ye/ObtYgp7EwQDA\n/wsgSlo7S1/7zzW0M1OioCjWNjBcTIAzMb1xmWxIJ74bFjVDv9TI/QAQKdtcMUma\nJqaAHIQ9BU0jNRiR0HrR\n=lp8j\n-----END PGP SIGNATURE-----\n","payload":"tree 217e4d8ab0f3d4a63e980afe5e19324e7c8bd22d\nparent 242f74c12d6a9eee0db6b1ed0ebbb8cf90390035\nparent 8bc5f213c80766131a1dce2a68c52a50c3eb22ba\nauthor Marius Tomaschewski <mt@suse.com> 1736325025 +0100\ncommitter GitHub <noreply@github.com> 1736325025 +0100\n\nMerge pull request https://github.com/openSUSE/wicked/pull/1054\n\nversion 0.6.78","verified_at":"2025-01-08T08:35:29Z"}},"url":"https://api.github.com/repos/openSUSE/wicked/commits/5b8827a8328677897ad584fe905f4043edddfe7b","html_url":"https://github.com/openSUSE/wicked/commit/5b8827a8328677897ad584fe905f4043edddfe7b","comments_url":"https://api.github.com/repos/openSUSE/wicked/commits/5b8827a8328677897ad584fe905f4043edddfe7b/comments","author":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"242f74c12d6a9eee0db6b1ed0ebbb8cf90390035","url":"https://api.github.com/repos/openSUSE/wicked/commits/242f74c12d6a9eee0db6b1ed0ebbb8cf90390035","html_url":"https://github.com/openSUSE/wicked/commit/242f74c12d6a9eee0db6b1ed0ebbb8cf90390035"},{"sha":"8bc5f213c80766131a1dce2a68c52a50c3eb22ba","url":"https://api.github.com/repos/openSUSE/wicked/commits/8bc5f213c80766131a1dce2a68c52a50c3eb22ba","html_url":"https://github.com/openSUSE/wicked/commit/8bc5f213c80766131a1dce2a68c52a50c3eb22ba"}]},"merge_base_commit":{"sha":"5b8827a8328677897ad584fe905f4043edddfe7b","node_id":"C_kwDOALs-EtoAKDViODgyN2E4MzI4Njc3ODk3YWQ1ODRmZTkwNWY0MDQzZWRkZGZlN2I","commit":{"author":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2025-01-08T08:30:25Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2025-01-08T08:30:25Z"},"message":"Merge pull request https://github.com/openSUSE/wicked/pull/1054\n\nversion 0.6.78","tree":{"sha":"217e4d8ab0f3d4a63e980afe5e19324e7c8bd22d","url":"https://api.github.com/repos/openSUSE/wicked/git/trees/217e4d8ab0f3d4a63e980afe5e19324e7c8bd22d"},"url":"https://api.github.com/repos/openSUSE/wicked/git/commits/5b8827a8328677897ad584fe905f4043edddfe7b","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJnfjehCRC1aQ7uu5UhlAAAVo8QAJuBj9hza1U/IlRlWqPGW02L\nfJmcnZoZ0W4jTIbPAJQzYyxFWSh/zYHeIxrvwS7Yr8TkMkKJFc/bKC1pSpvDR6+I\npgavogdL+oR6qFfVukmPHlGeGtTSs5+nnfd7mkT6yUsrhpQkNqmO4BjoNL1aN/E7\nJh/Gbpf/zkfXCd7GESDMHt/CT6msCJK7yribhwyksL3q6sB47yAU5D2VfQHPlg4Q\nwOM1FjFw/69L77o6jV2KRGdIhI02N9ifNboR2G5pagyclmXOgIMDcYNqlyL8Lt9C\ne9OxKrPTXzKX9gOvn0jN6akwEismlnYtvaCIxHx581jpiz4WDli4intFXfGki0HY\n6PF+zfO02WyPJXgSBY3L8Ka74w5blyXxr7m+l9kxcu6r5gWMXVbv5JDyhtflI98i\nBt0wp40Mxm+kaWkY8M1VBohLLjHilNg1xTGPg1Rl+q8OxJuA1T/mfMA8ardLOWy6\nfoDUdaVxb0psVPpSkfjwSyj8oOtjY8sZFICfRN7cmQ26+2BKv+AtUDUOhcpg0Lo2\nFls0yD70KArSu7rDm6D6l+KO+Iq/vkU1RYcLe8OYqkdzlorH1Ye/ObtYgp7EwQDA\n/wsgSlo7S1/7zzW0M1OioCjWNjBcTIAzMb1xmWxIJ74bFjVDv9TI/QAQKdtcMUma\nJqaAHIQ9BU0jNRiR0HrR\n=lp8j\n-----END PGP SIGNATURE-----\n","payload":"tree 217e4d8ab0f3d4a63e980afe5e19324e7c8bd22d\nparent 242f74c12d6a9eee0db6b1ed0ebbb8cf90390035\nparent 8bc5f213c80766131a1dce2a68c52a50c3eb22ba\nauthor Marius Tomaschewski <mt@suse.com> 1736325025 +0100\ncommitter GitHub <noreply@github.com> 1736325025 +0100\n\nMerge pull request https://github.com/openSUSE/wicked/pull/1054\n\nversion 0.6.78","verified_at":"2025-01-08T08:35:29Z"}},"url":"https://api.github.com/repos/openSUSE/wicked/commits/5b8827a8328677897ad584fe905f4043edddfe7b","html_url":"https://github.com/openSUSE/wicked/commit/5b8827a8328677897ad584fe905f4043edddfe7b","comments_url":"https://api.github.com/repos/openSUSE/wicked/commits/5b8827a8328677897ad584fe905f4043edddfe7b/comments","author":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"242f74c12d6a9eee0db6b1ed0ebbb8cf90390035","url":"https://api.github.com/repos/openSUSE/wicked/commits/242f74c12d6a9eee0db6b1ed0ebbb8cf90390035","html_url":"https://github.com/openSUSE/wicked/commit/242f74c12d6a9eee0db6b1ed0ebbb8cf90390035"},{"sha":"8bc5f213c80766131a1dce2a68c52a50c3eb22ba","url":"https://api.github.com/repos/openSUSE/wicked/commits/8bc5f213c80766131a1dce2a68c52a50c3eb22ba","html_url":"https://github.com/openSUSE/wicked/commit/8bc5f213c80766131a1dce2a68c52a50c3eb22ba"}]},"status":"ahead","ahead_by":11,"behind_by":0,"total_commits":11,"commits":[{"sha":"5f600d4a00ee2974c8a6e2f0fd19787e4f391716","node_id":"C_kwDOALs-EtoAKDVmNjAwZDRhMDBlZTI5NzRjOGE2ZTJmMGZkMTk3ODdlNGYzOTE3MTY","commit":{"author":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-20T08:43:01Z"},"committer":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-20T12:05:13Z"},"message":"leaseinfo: fix string option value single-quoting\n\nWhen a string option value contains single-quote character(s),\nescape them as we use single-quoting for the variable value.","tree":{"sha":"dc7238012d4f1506b87ecdb4a9e69b87da6ce082","url":"https://api.github.com/repos/openSUSE/wicked/git/trees/dc7238012d4f1506b87ecdb4a9e69b87da6ce082"},"url":"https://api.github.com/repos/openSUSE/wicked/git/commits/5f600d4a00ee2974c8a6e2f0fd19787e4f391716","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCAAdFiEE3ZA33ml/Cw8E9i+e0+hyDIZs5V0FAmoNo3wACgkQ0+hyDIZs\n5V0jXw/9Ghg11IzF/BKhGclYq/f5cfBpAJLgBQMhgy0Q+Q2CiH9UOFYsf48LOaP8\ntfRbY88tL9YPdtViPwPrBTrOhcniZyCCUKuYEeoC8FlXpPCmM/qV+SfFgjyfSpx5\nrCUTz9DnvacdOSyvjoTDCNUimOLlq17ZhOMHm8k36M9zrUpVdH+90V+/Kty/rxUm\nOED3pnNNpOSAHDUYyK/vmmCilV8X1z8RHAcRcNrZNL8G9J6w5Wv8EPVqbkLpaRki\nM/GGtkN3ARERVmvitHYsGb/JnhYrKdSxMdcmUglokZEJ/aS5pLl/7VQzb5TCYWWp\n0acyFnwiyYL5oY/iHWZc7loOOscPpD5+TnTpgl3DOhexBi45sQ4TIzGepOU9/SV8\nE6FEEz2cRiuYmKTKK6ir3RdB1eIdc/qUVoZ38mqgBq6jLSlhG023d+7n7AthSQil\nCLd+5HnsyveK01wmQMboYFSjmF5wsBB3See+20Aqqcdyq2SAGURWmaBir2AqfNnV\nk8dT/aTBTs0uaTfmRfpEfmlQbVgY3h5QWOKwzjK9b6zCXjwJJ+o3blX8VvWv0kHe\ny+gWinksN7+CJ0qgCkUiARgnsLRquKVwJ6jspoPckAtUyJ2Swb+nySnref4e0Jnb\nMSIAi9sJ0903Vd90Y145ozOBiza/SOmHs4THwVkXCa7/6+0AdBQ=\n=WzSs\n-----END PGP SIGNATURE-----","payload":"tree dc7238012d4f1506b87ecdb4a9e69b87da6ce082\nparent a747e430b346849ebce0727d3a841113db02cd7c\nauthor Marius Tomaschewski <mt@suse.com> 1779266581 +0200\ncommitter Marius Tomaschewski <mt@suse.com> 1779278713 +0200\n\nleaseinfo: fix string option value single-quoting\n\nWhen a string option value contains single-quote character(s),\nescape them as we use single-quoting for the variable value.\n","verified_at":"2026-06-11T11:00:07Z"}},"url":"https://api.github.com/repos/openSUSE/wicked/commits/5f600d4a00ee2974c8a6e2f0fd19787e4f391716","html_url":"https://github.com/openSUSE/wicked/commit/5f600d4a00ee2974c8a6e2f0fd19787e4f391716","comments_url":"https://api.github.com/repos/openSUSE/wicked/commits/5f600d4a00ee2974c8a6e2f0fd19787e4f391716/comments","author":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"a747e430b346849ebce0727d3a841113db02cd7c","url":"https://api.github.com/repos/openSUSE/wicked/commits/a747e430b346849ebce0727d3a841113db02cd7c","html_url":"https://github.com/openSUSE/wicked/commit/a747e430b346849ebce0727d3a841113db02cd7c"}]},{"sha":"13ea441486cdc5f40ef44b9d993c4f636312c80c","node_id":"C_kwDOALs-EtoAKDEzZWE0NDE0ODZjZGM1ZjQwZWY0NGI5ZDk5M2M0ZjYzNjMxMmM4MGM","commit":{"author":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-20T08:49:21Z"},"committer":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-20T12:08:13Z"},"message":"leaseinfo: fix to use indexed NDSCONTEXT key\n\nThere is a single nds context string option in dhcp4,\nbut the lease is using a string array to store it.\nIf there are multiple, use indexed NDSCONTEXT[_X] key,\nthe 1st one without: NDSCONTEXT='…', NDSCONTEXT_1='…'.","tree":{"sha":"5eb2104be191e88c2334f5c02a5bef069ffa6b82","url":"https://api.github.com/repos/openSUSE/wicked/git/trees/5eb2104be191e88c2334f5c02a5bef069ffa6b82"},"url":"https://api.github.com/repos/openSUSE/wicked/git/commits/13ea441486cdc5f40ef44b9d993c4f636312c80c","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCAAdFiEE3ZA33ml/Cw8E9i+e0+hyDIZs5V0FAmoNpDAACgkQ0+hyDIZs\n5V3T/w/+OU/poJSmbDPvSLPwVfP2KGG49pdbpKcJoxAHFyinccx/N/dyD3lx+nFU\nPIiZtriki1LyH7D3fdC6KkhU+MDEZOHkPRX/pQxYPRERuvynnu9S2hvkSSnGwRuS\n+UQ17N44Vi27m6TyJ7nSTZ21fB/ni9+8QeeV2ABJ1zBuVNS9ykVX6lRDLbp+phMh\nqg9Hm49JvWiPGzy+0q5JNVtqNANXuGQWCTCygCFOve6Kw0hs0xg5R5KjAKmES9uA\n85WOIgia+U9E28iMXzaj090RUUaB6SYmGmJ6S0ok+9YkWwsFLWcTHfkg77h3i6DK\ncRLvQTHPVSaOYtXr90IVr8v83SskcrYv0L+4vu/mHuL4O72Az3OdRKVnoolevXKn\nrpDWuna4gHMMcWjSrrXNsTOrGQ53ZbNShNkNofjV4UweZoZDacint5qLbl/lcc3A\njnMlM6FTOz3IxbtM0XUAcQwPzoHjEtomDSqCzvc63kJIm35ZMVSJyhGd0OmIXXdw\ngnXQpcHzBBviiWqH62AJd+IdlNh/MAv3tFa4wrTY5MCCivRC9P6UIuf2a9RTZGlL\nb45LnaffO+j5SAASEXW8lkdyDPZKk6l2TW4v0t9Hmn8butp5HQOJgsB2pRmPwysl\n+gG3KlAHRvZ4aL8YagJpyeiOdAeEbh+/SPLCMmMhy0HGrL/sRS4=\n=VBe6\n-----END PGP SIGNATURE-----","payload":"tree 5eb2104be191e88c2334f5c02a5bef069ffa6b82\nparent 5f600d4a00ee2974c8a6e2f0fd19787e4f391716\nauthor Marius Tomaschewski <mt@suse.com> 1779266961 +0200\ncommitter Marius Tomaschewski <mt@suse.com> 1779278893 +0200\n\nleaseinfo: fix to use indexed NDSCONTEXT key\n\nThere is a single nds context string option in dhcp4,\nbut the lease is using a string array to store it.\nIf there are multiple, use indexed NDSCONTEXT[_X] key,\nthe 1st one without: NDSCONTEXT='…', NDSCONTEXT_1='…'.\n","verified_at":"2026-06-11T11:00:07Z"}},"url":"https://api.github.com/repos/openSUSE/wicked/commits/13ea441486cdc5f40ef44b9d993c4f636312c80c","html_url":"https://github.com/openSUSE/wicked/commit/13ea441486cdc5f40ef44b9d993c4f636312c80c","comments_url":"https://api.github.com/repos/openSUSE/wicked/commits/13ea441486cdc5f40ef44b9d993c4f636312c80c/comments","author":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"5f600d4a00ee2974c8a6e2f0fd19787e4f391716","url":"https://api.github.com/repos/openSUSE/wicked/commits/5f600d4a00ee2974c8a6e2f0fd19787e4f391716","html_url":"https://github.com/openSUSE/wicked/commit/5f600d4a00ee2974c8a6e2f0fd19787e4f391716"}]},{"sha":"70d36c0bcab32384ddb4fdef0119efafda78d3a8","node_id":"C_kwDOALs-EtoAKDcwZDM2YzBiY2FiMzIzODRkZGI0ZmRlZjAxMTllZmFmZGE3OGQzYTg","commit":{"author":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-20T09:09:35Z"},"committer":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-20T12:09:01Z"},"message":"dhcp4: add a note about nds-context option 87\n\nThere is only one string value in (concatenated) nds context string\noption(s), just the lease is using a string array for it's storage.","tree":{"sha":"f3057b9bd870b0346e76615b2ef9a59d82ccaa67","url":"https://api.github.com/repos/openSUSE/wicked/git/trees/f3057b9bd870b0346e76615b2ef9a59d82ccaa67"},"url":"https://api.github.com/repos/openSUSE/wicked/git/commits/70d36c0bcab32384ddb4fdef0119efafda78d3a8","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCAAdFiEE3ZA33ml/Cw8E9i+e0+hyDIZs5V0FAmoNpGQACgkQ0+hyDIZs\n5V0i3hAAxoh83tgHVbV+EgeGdWlPyvC6oLGTMeLOA3aFM9tA2wi+zffRbJGGtyPW\nb80Va7NGefKY2kEZSEQZr5YaT2hQEIW3bmyWy2PuFClb1rujqH8ZnFnPVp0Geg/h\n4WfffHo75zASNfgPHba8hweALuDjx+h4fw4fb31hA7R7ST8fMBGcqVWKCOmqytyB\nJkUXL6sqr6H3mqU2DYzkSAqIRnMqL7U+G4NKevs4d8ixS6jybzBHaSgVXYR56iam\nZR1ufLFJZXiX92q5eBHIM3pCmq5rAhf2g+BSFbgIi/+RsBppAUv/zSCIsujR/i/x\nkV5TLhm5XYQm378g1dg8IaJ9qlieQDENp2X1m6PfIN7TE5ye9jc7Yp9V9kdYZDka\n7asUxVGtxS6UM2uD+8w75FbsoDzxctVE2K2lft34OmlHaoFUZh8EGSIrWXvhm9LM\nrbuTceHkUQbjcgxJxSCGOqzJI66V2/HcGLq3NejQF0vcRSGgO7JiFunKM4VblChZ\nAWHtY3pNQLsG9HPX58iVCW24SpdEYCzvH3duwy3Pi6Vt+KONArF3l4Fqa21UG2+8\n9X//iOas6DwCfiFs5oHPsmm2ZdJmNkOqOvL5xBLnUAZG+M78eipbH4xcy9drQpLx\n+27nfkKIyPfdtT+2aQ4PCdlBK1B8Sw/H8gypIblj3RlWTbK4o7E=\n=ofwO\n-----END PGP SIGNATURE-----","payload":"tree f3057b9bd870b0346e76615b2ef9a59d82ccaa67\nparent 13ea441486cdc5f40ef44b9d993c4f636312c80c\nauthor Marius Tomaschewski <mt@suse.com> 1779268175 +0200\ncommitter Marius Tomaschewski <mt@suse.com> 1779278941 +0200\n\ndhcp4: add a note about nds-context option 87\n\nThere is only one string value in (concatenated) nds context string\noption(s), just the lease is using a string array for it's storage.\n","verified_at":"2026-06-11T11:00:07Z"}},"url":"https://api.github.com/repos/openSUSE/wicked/commits/70d36c0bcab32384ddb4fdef0119efafda78d3a8","html_url":"https://github.com/openSUSE/wicked/commit/70d36c0bcab32384ddb4fdef0119efafda78d3a8","comments_url":"https://api.github.com/repos/openSUSE/wicked/commits/70d36c0bcab32384ddb4fdef0119efafda78d3a8/comments","author":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"13ea441486cdc5f40ef44b9d993c4f636312c80c","url":"https://api.github.com/repos/openSUSE/wicked/commits/13ea441486cdc5f40ef44b9d993c4f636312c80c","html_url":"https://github.com/openSUSE/wicked/commit/13ea441486cdc5f40ef44b9d993c4f636312c80c"}]},{"sha":"195bf9bff6d05c0f436dd2ba07775def690ddc85","node_id":"C_kwDOALs-EtoAKDE5NWJmOWJmZjZkMDVjMGY0MzZkZDJiYTA3Nzc1ZGVmNjkwZGRjODU","commit":{"author":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-20T11:10:58Z"},"committer":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-20T12:10:00Z"},"message":"utils: add new ni_check_string_characters utility","tree":{"sha":"f48e1f5aa596f3df6bca12813057013b77588e94","url":"https://api.github.com/repos/openSUSE/wicked/git/trees/f48e1f5aa596f3df6bca12813057013b77588e94"},"url":"https://api.github.com/repos/openSUSE/wicked/git/commits/195bf9bff6d05c0f436dd2ba07775def690ddc85","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCAAdFiEE3ZA33ml/Cw8E9i+e0+hyDIZs5V0FAmoNpJsACgkQ0+hyDIZs\n5V1RPA/+OaNEZ50JTP6bkrKWV8WcmWzBaGns8jp80YyglgxqUP2kd+SHa/9engo+\nr7DQHmmfoaFU12v6CiMKkf+vnKLsG76KW5+fJTjdaRmwF7Qr+Z0HoWi0QVb2XGMC\nfkTwR5QK+ibQrlCD6GmhcFI28HcWyM0sKwTZOX0iETiw5d0jlxluSC1pizuLWXJM\nOTzt98BD0NJfOaPZuKZPDr1s7ZMuCJwCztYmelX4WcnFun9b2uCqmtw1dVgDvA5t\n8qp+5eXZBJv48U/dCyLHbQgXtFf5YI5i5kS8TkvvsXrWjIXJqJQVz54Uf+Q0tl1b\nQ/QxIMkTBE0mNTulpD8VSkgBk80bnNam87m+tRKBCGVgjvPngO0t9xcC987Z7FEE\nYUfLGCD6s6fiOhwxlOFqCtCA+3HaLPizz4q0jgMGwTzIVjfH3WT+wD9BtRqzZJjX\nfRX0W2RtTzPfr2uYdujjqodO/0x5bTyQaSac3usDWkEqpS1pIQaSUjcOrure4VNC\npCCBsus/ZzqC7UmgoCvAuQoDPqqZR+HxVjtA4Uit9K3PgclevMyLx/Uv5q+j/fyk\nEfgegno6tPqcIxBdw+J9QsVXnFx7gbaZ7Wh7BMlWe+HXxJTZO+2Vf7NFM/soSD6J\nCkBLpFHORgbq7Fon69sjS5AkZqbPEr6JKHYtObN6FAaJ7d9O3jw=\n=ouzT\n-----END PGP SIGNATURE-----","payload":"tree f48e1f5aa596f3df6bca12813057013b77588e94\nparent 70d36c0bcab32384ddb4fdef0119efafda78d3a8\nauthor Marius Tomaschewski <mt@suse.com> 1779275458 +0200\ncommitter Marius Tomaschewski <mt@suse.com> 1779279000 +0200\n\nutils: add new ni_check_string_characters utility\n","verified_at":"2026-06-11T11:00:07Z"}},"url":"https://api.github.com/repos/openSUSE/wicked/commits/195bf9bff6d05c0f436dd2ba07775def690ddc85","html_url":"https://github.com/openSUSE/wicked/commit/195bf9bff6d05c0f436dd2ba07775def690ddc85","comments_url":"https://api.github.com/repos/openSUSE/wicked/commits/195bf9bff6d05c0f436dd2ba07775def690ddc85/comments","author":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"70d36c0bcab32384ddb4fdef0119efafda78d3a8","url":"https://api.github.com/repos/openSUSE/wicked/commits/70d36c0bcab32384ddb4fdef0119efafda78d3a8","html_url":"https://github.com/openSUSE/wicked/commit/70d36c0bcab32384ddb4fdef0119efafda78d3a8"}]},{"sha":"f7c65bfaa74211a8488fb1cb661897c56980e456","node_id":"C_kwDOALs-EtoAKGY3YzY1YmZhYTc0MjExYTg0ODhmYjFjYjY2MTg5N2M1Njk4MGU0NTY","commit":{"author":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-20T11:21:00Z"},"committer":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-22T16:53:17Z"},"message":"dhcp: add ni_dhcp_check_printable_string utility\n\nUnlike the ni_check_printable, it rejects single-quotes too.","tree":{"sha":"2c4ac65f85711fba278e2678c59979fce8072962","url":"https://api.github.com/repos/openSUSE/wicked/git/trees/2c4ac65f85711fba278e2678c59979fce8072962"},"url":"https://api.github.com/repos/openSUSE/wicked/git/commits/f7c65bfaa74211a8488fb1cb661897c56980e456","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCAAdFiEE3ZA33ml/Cw8E9i+e0+hyDIZs5V0FAmoQigMACgkQ0+hyDIZs\n5V12Zw//axu6SV/Q3j07462fmvSzxQ/BOjiUgc8VYE2j0DRdP4moBQQEMEpl4beD\nqmbFnuUKmQHfWDcF2gPM45rTBY68BCD4qls1sYn+7c4gl0TN/dGsX67UNCx64aKY\n15fOZdzrdPrq4aTm96QQbCi5drPz55XJ1zAQ4yPgNXau3DtUj+m4nRaoh3f0yk/Z\nIWLFrkSXS9AdVB7K9jhwxKG5A67fP1PWxwjzlhQjyCgTZvX5ohD7J28l5bvsnivo\nZp3uo3H3ooNg7J3qEa5qqeP9l09TSQHU4GKYbL8uWGMoLDF5lpi9dJaMjMd8ZZ3z\nkybA55SdWkIDZxKWW16+kN88tBqT5a9nao6v1LCYD08Ci1QvG/U0fjB2mAwerOCt\ntFaTvRudqUt4dCBlZ0WjV7egjw8DMEO4nP951dwawrTpSF48QAavE3cpxQHmJMcY\nq40k4dAyk9JnAzJNHJy1Ir3OZN/2k+4NMO2w20Dvl0qkOHvUJu3wxRnQ5wtS3vxH\nDpr2U/y/UupC/OhIAm9igULDSOae8HGgf2gxEJignZHCNMDB8iiwTGoS0h94mHQ0\n1PLhq2qWQ58SK/lzM/jiyD0Kh+MTFDk2k24zICVR0y0XRmzaeMVZcWIuU61O6Qpf\n4B30IQvXvr5yztsaOc71vydbtfaIx+gCR/17Syjtt6F0k7ZaFGc=\n=j4r9\n-----END PGP SIGNATURE-----","payload":"tree 2c4ac65f85711fba278e2678c59979fce8072962\nparent 195bf9bff6d05c0f436dd2ba07775def690ddc85\nauthor Marius Tomaschewski <mt@suse.com> 1779276060 +0200\ncommitter Marius Tomaschewski <mt@suse.com> 1779468797 +0200\n\ndhcp: add ni_dhcp_check_printable_string utility\n\nUnlike the ni_check_printable, it rejects single-quotes too.\n","verified_at":"2026-06-11T11:00:07Z"}},"url":"https://api.github.com/repos/openSUSE/wicked/commits/f7c65bfaa74211a8488fb1cb661897c56980e456","html_url":"https://github.com/openSUSE/wicked/commit/f7c65bfaa74211a8488fb1cb661897c56980e456","comments_url":"https://api.github.com/repos/openSUSE/wicked/commits/f7c65bfaa74211a8488fb1cb661897c56980e456/comments","author":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"195bf9bff6d05c0f436dd2ba07775def690ddc85","url":"https://api.github.com/repos/openSUSE/wicked/commits/195bf9bff6d05c0f436dd2ba07775def690ddc85","html_url":"https://github.com/openSUSE/wicked/commit/195bf9bff6d05c0f436dd2ba07775def690ddc85"}]},{"sha":"9c0e06a6504e986777191c29ce1eed4c46a9b43d","node_id":"C_kwDOALs-EtoAKDljMGUwNmE2NTA0ZTk4Njc3NzE5MWMyOWNlMWVlZDRjNDZhOWI0M2Q","commit":{"author":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-20T11:25:31Z"},"committer":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-22T16:53:41Z"},"message":"dhcp: discard string options with single quotes","tree":{"sha":"6d7d1cf7208c9d788ebf54a587e901a21a7c6e68","url":"https://api.github.com/repos/openSUSE/wicked/git/trees/6d7d1cf7208c9d788ebf54a587e901a21a7c6e68"},"url":"https://api.github.com/repos/openSUSE/wicked/git/commits/9c0e06a6504e986777191c29ce1eed4c46a9b43d","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCAAdFiEE3ZA33ml/Cw8E9i+e0+hyDIZs5V0FAmoQihUACgkQ0+hyDIZs\n5V2tOxAAlfxCeldNOVbBlzOWx/6gyyTfJ/catMVUc7sS9Ol1a65/bMqqVKTlFygd\nmblzEL9+SDohsgPyWC07r9sz5M1ItbLJCPBLd5mt9bYCKSCIVxouk+SIO18YW0Uh\n9Q7bEvHMbIDsQAY9gF4FVPyb0DDzHv/mk+Ifquq7fazLZ7qawJlkUBxxv0xFZybh\nYdh3xonTV3eHULA+O4nA72g+nF8/a6LBJ9d5EUo4YVbv+A01FW0s3OHmPNLck6U2\n6Kf4XNOHKoWlYVywWyfhxUQU/C1D3zsSuUdo3H5f6RAM86xiW33nkB6w08KnMiz9\nwevnUDz0pft5WFSwRDex4+BIyoY+ulJbmHAIV5+5wLFUWoR3ZE+xyIrAoZDxtVxC\nu+vrJR5EoIFFwH9uy3LTEDd0H4NWTq2NOLurpzAX5Ca5GvwcFnAvH32O5OlPw6xt\noibVu4JyIpqM0FMFi+kBzDWctQq2Ca8VZzNwnD25zpzGmzeltu7A9bH4tdGnSEtg\ncDXIQ4+UsnYvEtK3y03wwrnyfGUxS2rbdFK39f/FIVH9CbyxpPDfV9GBuB0d563d\nm5W3FwiRLQNGyAqxDJsWZxgsbkv982q2qydzbxtPdkG3uEx1QXFekdNdbXVx1OJq\nsGJashMxzm3w3CsQZw+YKiY0b+llcDAR7i57xeggLbdXzttnXS0=\n=xALa\n-----END PGP SIGNATURE-----","payload":"tree 6d7d1cf7208c9d788ebf54a587e901a21a7c6e68\nparent f7c65bfaa74211a8488fb1cb661897c56980e456\nauthor Marius Tomaschewski <mt@suse.com> 1779276331 +0200\ncommitter Marius Tomaschewski <mt@suse.com> 1779468821 +0200\n\ndhcp: discard string options with single quotes\n","verified_at":"2026-06-11T11:00:07Z"}},"url":"https://api.github.com/repos/openSUSE/wicked/commits/9c0e06a6504e986777191c29ce1eed4c46a9b43d","html_url":"https://github.com/openSUSE/wicked/commit/9c0e06a6504e986777191c29ce1eed4c46a9b43d","comments_url":"https://api.github.com/repos/openSUSE/wicked/commits/9c0e06a6504e986777191c29ce1eed4c46a9b43d/comments","author":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"f7c65bfaa74211a8488fb1cb661897c56980e456","url":"https://api.github.com/repos/openSUSE/wicked/commits/f7c65bfaa74211a8488fb1cb661897c56980e456","html_url":"https://github.com/openSUSE/wicked/commit/f7c65bfaa74211a8488fb1cb661897c56980e456"}]},{"sha":"4137e1b585bdb60e0c704a929081737d869b74bc","node_id":"C_kwDOALs-EtoAKDQxMzdlMWI1ODViZGI2MGUwYzcwNGE5MjkwODE3MzdkODY5Yjc0YmM","commit":{"author":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-22T17:03:48Z"},"committer":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-22T17:03:48Z"},"message":"dhcp: add ni_dhcp_check_posix_tzdbname and tzstring","tree":{"sha":"3c85619bd9c3a93731a53f4b7f623b96d8e06067","url":"https://api.github.com/repos/openSUSE/wicked/git/trees/3c85619bd9c3a93731a53f4b7f623b96d8e06067"},"url":"https://api.github.com/repos/openSUSE/wicked/git/commits/4137e1b585bdb60e0c704a929081737d869b74bc","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCAAdFiEE3ZA33ml/Cw8E9i+e0+hyDIZs5V0FAmoQjKYACgkQ0+hyDIZs\n5V1fYw//Tp/kYIgu+zkPTCCytJjOHc9acI/EJ1tHjyi45+TeXdLLQl3z35SEbvhP\nv7FqFRdZEOerdm/4Pl+kon0kuQuPg4CTANmbhXnjZZxdxt3YecryDb7nLDuwjY86\nh2Sg09xD/unil9ASyEVEJtt5sIOsM5jITHDnSGNYeGGsIZk9QcDgQoDNdUTEgPOL\nJwheUCc7RATqOOnSWx7ODObZRlIivTI6dr/dSxHG6SYzgWgAlbhzZjrY5QyHLZbV\nkTaY+Ra/sEyuniHN3gS6mozmHpZ7K56zX0TZLFHte446iY+I+o/rE+3ozPNw9i3f\nJ7NOr6VJhycOREGbk/agzWoSybrb8LXw9ztAt04KB2VWgGjqI3U8z4YjEJvEvm13\nzokD9rVuuRpmxyRuqxbb3HXDf6+1tGDZ/hrS6u8YrYO8rvYu++eaPSM4rcLiDZww\nApTpXVWFlyiGcxUTNETzhmIR+Swp0iwRbxmtp8oSsLdFfer2Yze/xxjFFoqA1y0v\nM0PcurUBlJmUObAnoafw6GC7Gou1r79gOsxexnFmo7DKjTyFHMVWvL2mNAoSMBCW\nIXDw5KQTi4eWG/z4G+bFSuOsvIY9WwMSsq/tVpHjjCI6hUs/aDcg7UfyeK0qvX6I\nYYNjzDIR15Offhx2MiTaM0NB2Smfe0Kg9CCoCZbtMr9OVpLU6kQ=\n=3Smz\n-----END PGP SIGNATURE-----","payload":"tree 3c85619bd9c3a93731a53f4b7f623b96d8e06067\nparent 9c0e06a6504e986777191c29ce1eed4c46a9b43d\nauthor Marius Tomaschewski <mt@suse.com> 1779469428 +0200\ncommitter Marius Tomaschewski <mt@suse.com> 1779469428 +0200\n\ndhcp: add ni_dhcp_check_posix_tzdbname and tzstring\n","verified_at":"2026-06-11T11:00:07Z"}},"url":"https://api.github.com/repos/openSUSE/wicked/commits/4137e1b585bdb60e0c704a929081737d869b74bc","html_url":"https://github.com/openSUSE/wicked/commit/4137e1b585bdb60e0c704a929081737d869b74bc","comments_url":"https://api.github.com/repos/openSUSE/wicked/commits/4137e1b585bdb60e0c704a929081737d869b74bc/comments","author":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"9c0e06a6504e986777191c29ce1eed4c46a9b43d","url":"https://api.github.com/repos/openSUSE/wicked/commits/9c0e06a6504e986777191c29ce1eed4c46a9b43d","html_url":"https://github.com/openSUSE/wicked/commit/9c0e06a6504e986777191c29ce1eed4c46a9b43d"}]},{"sha":"366b9ecba3869213e261ebfb4919b13d68f23d3a","node_id":"C_kwDOALs-EtoAKDM2NmI5ZWNiYTM4NjkyMTNlMjYxZWJmYjQ5MTliMTNkNjhmMjNkM2E","commit":{"author":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-26T10:51:35Z"},"committer":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-27T12:33:22Z"},"message":"dhcp: adjust posix-tz-dbname and tz-string option checks\n\nUse a dedicated check of the valid tz option values characters\naccording to the definition in RFC4833 and IEEE Std 1003.1-2024.","tree":{"sha":"7a59d99e00c0d9d8f41a587ab4750c94be556e63","url":"https://api.github.com/repos/openSUSE/wicked/git/trees/7a59d99e00c0d9d8f41a587ab4750c94be556e63"},"url":"https://api.github.com/repos/openSUSE/wicked/git/commits/366b9ecba3869213e261ebfb4919b13d68f23d3a","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCAAdFiEE3ZA33ml/Cw8E9i+e0+hyDIZs5V0FAmoW5JQACgkQ0+hyDIZs\n5V3S+xAAsMzwJRUwtTmN1xNMb6UcyX0md3zs8aGQl7tne6xf/drzNEmsCPLoMbU7\nxeXoyp/qRamwpk+OHs9LZlJ1nZGx7QYCAOsZyi3WxFVjO8RjqfIfM74MMzINTZsy\njXpJkTwCrSDcAChxxgywSTL3U3ipPoPRQiVryRvkG3F/id57x2KwA08BgIiH5/5f\n2t1TivHFtET0RTV+PzHYTRB8uO7n5ZFXo8vGMb3rxWWDdCqbSVh9hXslleENdoVF\npQCjtfo1cPlTmDtKnOUIwbInVocn9+CrxjgKlmXvTfQb3p87SS9Ldy7R+BunE2uR\nKW2tCaivyP5TIngSYBJ81P9SaqEKGGpFEBPwQoA2nn3LssEQjdsPBQpP0davesKf\negFmyxAEy71MwORl4xRR/uX7kVw//hi0lu7sQZart78jdNNIhE66ps0T6MBdbvIm\nUZlYU+1DFNkYPAynMBWiI5qITP8bC9rHNeeJDqpvGNjfwYJdRorsZCG+PkAldHOQ\nUeG1qJLlbZ8NpI/lOPWTlFEzNXgstYvIiQDdsM0MKi74Rx36BQzSmBjO13FPgL0S\nKt1cuW0+AakBUcJaSf3Hs7ATUXwd6CWSm73wz8JD00LAmiskGzV3Iiku9yM1ZiDZ\nApPmTcBW4XSKp+yrzDtWlBUVVDubKClwTBJE/O+CNy+qLQopMFQ=\n=XZsX\n-----END PGP SIGNATURE-----","payload":"tree 7a59d99e00c0d9d8f41a587ab4750c94be556e63\nparent 4137e1b585bdb60e0c704a929081737d869b74bc\nauthor Marius Tomaschewski <mt@suse.com> 1779792695 +0200\ncommitter Marius Tomaschewski <mt@suse.com> 1779885202 +0200\n\ndhcp: adjust posix-tz-dbname and tz-string option checks\n\nUse a dedicated check of the valid tz option values characters\naccording to the definition in RFC4833 and IEEE Std 1003.1-2024.\n","verified_at":"2026-06-11T11:00:07Z"}},"url":"https://api.github.com/repos/openSUSE/wicked/commits/366b9ecba3869213e261ebfb4919b13d68f23d3a","html_url":"https://github.com/openSUSE/wicked/commit/366b9ecba3869213e261ebfb4919b13d68f23d3a","comments_url":"https://api.github.com/repos/openSUSE/wicked/commits/366b9ecba3869213e261ebfb4919b13d68f23d3a/comments","author":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"4137e1b585bdb60e0c704a929081737d869b74bc","url":"https://api.github.com/repos/openSUSE/wicked/commits/4137e1b585bdb60e0c704a929081737d869b74bc","html_url":"https://github.com/openSUSE/wicked/commit/4137e1b585bdb60e0c704a929081737d869b74bc"}]},{"sha":"87c2b65b703a8e652d48639220d3052e7310ccc9","node_id":"C_kwDOALs-EtoAKDg3YzJiNjViNzAzYThlNjUyZDQ4NjM5MjIwZDMwNTJlNzMxMGNjYzk","commit":{"author":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-27T07:32:50Z"},"committer":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-27T12:33:32Z"},"message":"spec: call regenerate_initrd post/posttrans macros\n\nTrigger to regenerate initrd that may contain wicked\nbinaries on updates from wicked versions <= 0.6.78.","tree":{"sha":"a9b7cc7fe16dba1d5e1a459e66223d6c5079023d","url":"https://api.github.com/repos/openSUSE/wicked/git/trees/a9b7cc7fe16dba1d5e1a459e66223d6c5079023d"},"url":"https://api.github.com/repos/openSUSE/wicked/git/commits/87c2b65b703a8e652d48639220d3052e7310ccc9","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCAAdFiEE3ZA33ml/Cw8E9i+e0+hyDIZs5V0FAmoW5JwACgkQ0+hyDIZs\n5V1/Fg/9GQwNsMxhb51HHVjEC//ZGXbTkq1rdPW+zgbhkP3iB58fexwtU092PAO7\nXhA11vfvev3bmdKc0USTuZX6k8uI6yLNlcZL/5IAcl7KOLmfjaNeJHQUw2UMrwwT\n7dFH7y2qsvyQ2Wblt5Y05zUx6uu5zM+ktyCgVVbkwu/PTDPfGUxhORwSNzBZ0dhA\nszPYKRbBdzJR2iBlVZnGFvqtEeHO1cQHbXT5/Y/cOfPjQnvPwswiowOlFILz1nKb\ngSgaRpe7Od48rZyV+lmKGWBcoxc/3CGPhSQ8AmdKF4kUsZNtm5Z8THPSkClARhqz\nDcLJiOAmJdsrvDytGrod3004RezB12VDpyb0yv20fozCzld4K2jvHE91nD7WQB0I\nnJB5VDC5TNB5AvjhJ7OH71+3gqyRVhExmGsFGKeUEjtRHa0pTFftmK5ltEMKevyd\nVVdlSNofZ5s5Yrd//UwGNtxajTEYwFuxmx4MV+DCmrQeMtv5eewt2SjeCOKmR1/9\n7ZTRDKYGOtR5zqUYXxGN0T1OluVdECkc+QeuHwgFEYX24g9PmvX5pIbyiuzxxhQR\n8LUAn5QRtj9XipvAa4Ojl9/vUEiwz8IA5wc0HPUiqZS2zpDzZtElZB1NgP+/Xwmx\ne90eNqV33pawjZkJbQJH2eywLkYdzM6NFE/FbM32Ug3RUB8hfak=\n=igQH\n-----END PGP SIGNATURE-----","payload":"tree a9b7cc7fe16dba1d5e1a459e66223d6c5079023d\nparent 366b9ecba3869213e261ebfb4919b13d68f23d3a\nauthor Marius Tomaschewski <mt@suse.com> 1779867170 +0200\ncommitter Marius Tomaschewski <mt@suse.com> 1779885212 +0200\n\nspec: call regenerate_initrd post/posttrans macros\n\nTrigger to regenerate initrd that may contain wicked\nbinaries on updates from wicked versions <= 0.6.78.\n","verified_at":"2026-06-11T11:00:07Z"}},"url":"https://api.github.com/repos/openSUSE/wicked/commits/87c2b65b703a8e652d48639220d3052e7310ccc9","html_url":"https://github.com/openSUSE/wicked/commit/87c2b65b703a8e652d48639220d3052e7310ccc9","comments_url":"https://api.github.com/repos/openSUSE/wicked/commits/87c2b65b703a8e652d48639220d3052e7310ccc9/comments","author":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"366b9ecba3869213e261ebfb4919b13d68f23d3a","url":"https://api.github.com/repos/openSUSE/wicked/commits/366b9ecba3869213e261ebfb4919b13d68f23d3a","html_url":"https://github.com/openSUSE/wicked/commit/366b9ecba3869213e261ebfb4919b13d68f23d3a"}]},{"sha":"6386280e9c3ae4c7503adb267ff28f23cd6579b0","node_id":"C_kwDOALs-EtoAKDYzODYyODBlOWMzYWU0Yzc1MDNhZGIyNjdmZjI4ZjIzY2Q2NTc5YjA","commit":{"author":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-27T07:47:58Z"},"committer":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-27T12:35:13Z"},"message":"dhcp: fix leaseinfo dump and discard unsafe strings\n\nFix an indirect remote shell command injection via unsanitized\ndhcp strings and leaseinfo dump (bsc#1265221,CVE-2026-44932):\n- Fix to escape single-quotes in leaseinfo dump output used by the\n  `wicked test dhcp4` and `wicked test dhcp6` and written to the\n  /run/wicked/leaseinfo.* files, e.g. to pass them to netconfig.\n  A netconfig modify filtered for strict key='value' lines without\n  any escaped quotes and discarded these lines already before.\n- Fix posix-tz-dbname and tz-string option processing checks to\n  permit only valid characters according to RFC4833.\n- Discard string values containing single-quotes in other options.\n- Trigger to regenerate initrd that may contain wicked binaries on\n  updates from wicked versions <= 0.6.78.","tree":{"sha":"e0d541f5ad6c3e30b91445bccf881b351584395e","url":"https://api.github.com/repos/openSUSE/wicked/git/trees/e0d541f5ad6c3e30b91445bccf881b351584395e"},"url":"https://api.github.com/repos/openSUSE/wicked/git/commits/6386280e9c3ae4c7503adb267ff28f23cd6579b0","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCAAdFiEE3ZA33ml/Cw8E9i+e0+hyDIZs5V0FAmoW5QkACgkQ0+hyDIZs\n5V1biRAAxDpcXExOPrV54zVijdvpqkyUbesK67jEawqcPwCyvOAirH1X5/jkwRjW\nVnZiQnRuqmqFKCu2KIRMcW1LZhSF9zAmHmiBgRPJq2Mgt7cnbLR4jFOQKJslASe6\nsXzcylnNJEnDW3KxJv2TjaODjME8mEfJ4Fi3OKJqQwhtfrwaQy6sikypTE/TTKpD\noWoy3Hjqhz68bXIxrb39ugpUE6k4eFkAPlVuKhBTIWPKTNxgoLPBjRRMKtW0Han8\nwTrCA8dArxoWU5kAjc7aEbBIrieq4L36zkShO3txTCX5O5hzS+TolTj+zk23Rp/z\nu3rPjvexOBaNt4OJybqUTap8Rdj2Wml4N7VLaUsOmCR4jju7gRmOpung8XuYL3PU\nprnCNmxFywkfGXoNTtVw4n2f0E6QJHewJ9LkmOHMdX67HFv8c96tD95+FhTnyBWq\nJGlwygOtv6av0ekmRWH4Ta/45JK09KyRz8opMKl0D2N10bEY84E4/rrLXMf80ceS\nL/cQd20a5xhfqU4UvhMuIaCYe5M8ngKieDCLStkwTkDnvIhX+Pq2524VROdvIMFW\ns5rWQsztITN6uYR2ZhUZ0r6fs/NQ1UFinpUUXXr2wvSrSeFueTrpdAhM0jl3KLzg\nrcapo6uvM5Jn2vY/bAsIJABafT0KtUDWAAoV6op1oqXV0fUSRYk=\n=NAM9\n-----END PGP SIGNATURE-----","payload":"tree e0d541f5ad6c3e30b91445bccf881b351584395e\nparent 5b8827a8328677897ad584fe905f4043edddfe7b\nparent 87c2b65b703a8e652d48639220d3052e7310ccc9\nauthor Marius Tomaschewski <mt@suse.com> 1779868078 +0200\ncommitter Marius Tomaschewski <mt@suse.com> 1779885313 +0200\n\ndhcp: fix leaseinfo dump and discard unsafe strings\n\nFix an indirect remote shell command injection via unsanitized\ndhcp strings and leaseinfo dump (bsc#1265221,CVE-2026-44932):\n- Fix to escape single-quotes in leaseinfo dump output used by the\n  `wicked test dhcp4` and `wicked test dhcp6` and written to the\n  /run/wicked/leaseinfo.* files, e.g. to pass them to netconfig.\n  A netconfig modify filtered for strict key='value' lines without\n  any escaped quotes and discarded these lines already before.\n- Fix posix-tz-dbname and tz-string option processing checks to\n  permit only valid characters according to RFC4833.\n- Discard string values containing single-quotes in other options.\n- Trigger to regenerate initrd that may contain wicked binaries on\n  updates from wicked versions <= 0.6.78.\n","verified_at":"2026-06-11T11:00:07Z"}},"url":"https://api.github.com/repos/openSUSE/wicked/commits/6386280e9c3ae4c7503adb267ff28f23cd6579b0","html_url":"https://github.com/openSUSE/wicked/commit/6386280e9c3ae4c7503adb267ff28f23cd6579b0","comments_url":"https://api.github.com/repos/openSUSE/wicked/commits/6386280e9c3ae4c7503adb267ff28f23cd6579b0/comments","author":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"5b8827a8328677897ad584fe905f4043edddfe7b","url":"https://api.github.com/repos/openSUSE/wicked/commits/5b8827a8328677897ad584fe905f4043edddfe7b","html_url":"https://github.com/openSUSE/wicked/commit/5b8827a8328677897ad584fe905f4043edddfe7b"},{"sha":"87c2b65b703a8e652d48639220d3052e7310ccc9","url":"https://api.github.com/repos/openSUSE/wicked/commits/87c2b65b703a8e652d48639220d3052e7310ccc9","html_url":"https://github.com/openSUSE/wicked/commit/87c2b65b703a8e652d48639220d3052e7310ccc9"}]},{"sha":"6cb69874f5df67b6e22d599a3568a64a8db97e81","node_id":"C_kwDOALs-EtoAKDZjYjY5ODc0ZjVkZjY3YjZlMjJkNTk5YTM1NjhhNjRhOGRiOTdlODE","commit":{"author":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-27T08:12:34Z"},"committer":{"name":"Marius Tomaschewski","email":"mt@suse.com","date":"2026-05-27T12:35:55Z"},"message":"version 0.6.79","tree":{"sha":"e538db7cf91cbecf0f044498cd783a2e4fe7ebd3","url":"https://api.github.com/repos/openSUSE/wicked/git/trees/e538db7cf91cbecf0f044498cd783a2e4fe7ebd3"},"url":"https://api.github.com/repos/openSUSE/wicked/git/commits/6cb69874f5df67b6e22d599a3568a64a8db97e81","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCAAdFiEE3ZA33ml/Cw8E9i+e0+hyDIZs5V0FAmoW5SsACgkQ0+hyDIZs\n5V3aHRAAnv9ysE6ZcApMVglLQQtY3sgkC7lhF548tnRlv4EmoHK3rT0RCgap3Gmx\ne9pt8k3s1OqoX3gT55oWl/J2wyf3lxgfhl5mBXNKbDX2Ddz+jZ+SxKkD0ZAb7qoI\n93lelPijzvoTJdbx9Ok3nkl0zHm7S3IOrbn9zwmDv4RnSJuQdHRPuLygY0u/aohS\n4yUXlTkJ8U3ixM7++gKBFlzA+aHaTnEOZee4V+Kl0Awhh7vq8ZyWr72TtYsGu2pF\naJE0l2D72iG3ccths966BXtFMTHN9Ow/Lbw3kH6MH+h9G1A2/SqfTHhXTe4unexS\neQg3/5XIRceumOB/oa6gl0v3lihyRxu9NSngEtlLT/06TNZGnmwZjmV1+TKX8uC5\nsFZY2zVmZ6LAAIkMdxtJNM7HsLoN7l9187V1iEWE4xV5JnQtnSK6vg/1hTNiW8Sq\nWuPPx5N9RVMo7h8sI4Of+YCzD9UBwl/mGO+M1wg8H5wB3Hb7qhsHbewja2vmtZvQ\nh/yxSILJtozD6SILiF4tG8dfelwH8T2csMBIRWEUq0p3FyV3dXTVnTDB0e7j7hWU\nH/rRgJkgcOUj5L4w3bCf/LsKIx67quVI0qUHHKSVLSwtxc0X6dV+3U34+quYdCek\n8mDoi/Cuy5TzKmI3Wcla8hgMsQ5mdY2W/uVY+HRqetlXfdOkQU4=\n=ODgN\n-----END PGP SIGNATURE-----","payload":"tree e538db7cf91cbecf0f044498cd783a2e4fe7ebd3\nparent 6386280e9c3ae4c7503adb267ff28f23cd6579b0\nauthor Marius Tomaschewski <mt@suse.com> 1779869554 +0200\ncommitter Marius Tomaschewski <mt@suse.com> 1779885355 +0200\n\nversion 0.6.79\n","verified_at":"2026-06-11T11:00:07Z"}},"url":"https://api.github.com/repos/openSUSE/wicked/commits/6cb69874f5df67b6e22d599a3568a64a8db97e81","html_url":"https://github.com/openSUSE/wicked/commit/6cb69874f5df67b6e22d599a3568a64a8db97e81","comments_url":"https://api.github.com/repos/openSUSE/wicked/commits/6cb69874f5df67b6e22d599a3568a64a8db97e81/comments","author":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"mtomaschewski","id":3327403,"node_id":"MDQ6VXNlcjMzMjc0MDM=","avatar_url":"https://avatars.githubusercontent.com/u/3327403?v=4","gravatar_id":"","url":"https://api.github.com/users/mtomaschewski","html_url":"https://github.com/mtomaschewski","followers_url":"https://api.github.com/users/mtomaschewski/followers","following_url":"https://api.github.com/users/mtomaschewski/following{/other_user}","gists_url":"https://api.github.com/users/mtomaschewski/gists{/gist_id}","starred_url":"https://api.github.com/users/mtomaschewski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mtomaschewski/subscriptions","organizations_url":"https://api.github.com/users/mtomaschewski/orgs","repos_url":"https://api.github.com/users/mtomaschewski/repos","events_url":"https://api.github.com/users/mtomaschewski/events{/privacy}","received_events_url":"https://api.github.com/users/mtomaschewski/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"6386280e9c3ae4c7503adb267ff28f23cd6579b0","url":"https://api.github.com/repos/openSUSE/wicked/commits/6386280e9c3ae4c7503adb267ff28f23cd6579b0","html_url":"https://github.com/openSUSE/wicked/commit/6386280e9c3ae4c7503adb267ff28f23cd6579b0"}]}],"files":[{"sha":"4ca3655493f246a0b4ca854883dac3eb47b22949","filename":"VERSION","status":"modified","additions":1,"deletions":1,"changes":2,"blob_url":"https://github.com/openSUSE/wicked/blob/6cb69874f5df67b6e22d599a3568a64a8db97e81/VERSION","raw_url":"https://github.com/openSUSE/wicked/raw/6cb69874f5df67b6e22d599a3568a64a8db97e81/VERSION","contents_url":"https://api.github.com/repos/openSUSE/wicked/contents/VERSION?ref=6cb69874f5df67b6e22d599a3568a64a8db97e81","patch":"@@ -1 +1 @@\n-0.6.78\n+0.6.79"},{"sha":"71d083b30c46baa8467e458698f20f78bf72f93b","filename":"include/wicked/util.h","status":"modified","additions":1,"deletions":0,"changes":1,"blob_url":"https://github.com/openSUSE/wicked/blob/6cb69874f5df67b6e22d599a3568a64a8db97e81/include%2Fwicked%2Futil.h","raw_url":"https://github.com/openSUSE/wicked/raw/6cb69874f5df67b6e22d599a3568a64a8db97e81/include%2Fwicked%2Futil.h","contents_url":"https://api.github.com/repos/openSUSE/wicked/contents/include%2Fwicked%2Futil.h?ref=6cb69874f5df67b6e22d599a3568a64a8db97e81","patch":"@@ -501,6 +501,7 @@ extern void\t\tni_hashctx_puts(ni_hashctx_t *, const char *);\n extern ni_bool_t\tni_check_domain_name(const char *, size_t, int);\n extern ni_bool_t\tni_check_pathname(const char *, size_t);\n extern ni_bool_t\tni_check_printable(const char *, size_t);\n+extern ni_bool_t\tni_check_string_characters(const char *, size_t, int (*)(int));\n extern const char *\tni_print_suspect(const char *, size_t);\n \n #endif /* __WICKED_UTIL_H__ */"},{"sha":"f30c23d0f6e529ecfd4f505ce9b0c05a17e02a12","filename":"src/dhcp.c","status":"modified","additions":92,"deletions":1,"changes":93,"blob_url":"https://github.com/openSUSE/wicked/blob/6cb69874f5df67b6e22d599a3568a64a8db97e81/src%2Fdhcp.c","raw_url":"https://github.com/openSUSE/wicked/raw/6cb69874f5df67b6e22d599a3568a64a8db97e81/src%2Fdhcp.c","contents_url":"https://api.github.com/repos/openSUSE/wicked/contents/src%2Fdhcp.c?ref=6cb69874f5df67b6e22d599a3568a64a8db97e81","patch":"@@ -383,7 +383,7 @@ ni_dhcp_option_type_opt_to_str_string(const ni_dhcp_option_decl_t *decl, ni_buff\n \t\t\treturn FALSE;\n \n \t\tlen = ni_string_len(*str);\n-\t\tif (len && !ni_check_printable(*str, len)) {\n+\t\tif (len && !ni_dhcp_check_printable_string(*str, len)) {\n \t\t\tni_string_free(str);\n \t\t\treturn FALSE;\n \t\t}\n@@ -1867,6 +1867,97 @@ ni_dhcp_fqdn_init(ni_dhcp_fqdn_t *fqdn)\n \t}\n }\n \n+static int\n+ni_dhcp_valid_in_printable_string(int c)\n+{\n+\t/*\n+\t * A printable character including space and tab,\n+\t * but NOT a single quote.\n+\t */\n+\tswitch (c) {\n+\tcase '\\'':\n+\t\treturn 0;\n+\tcase '\\t':\n+\t\treturn 1;\n+\tdefault:\n+\t\treturn isprint(c);\n+\t}\n+}\n+\n+ni_bool_t\n+ni_dhcp_check_printable_string(const char *str, size_t len)\n+{\n+\treturn ni_check_string_characters(str, len, ni_dhcp_valid_in_printable_string);\n+}\n+\n+static int\n+ni_dhcp_valid_in_posix_tzdbname(int c)\n+{\n+\t/*\n+\t * Geographical timezones (Area/Location) as in IANA timezone database\n+\t *\n+\t * See https://datatracker.ietf.org/doc/html/rfc4833#section-4,\n+\t * The Open Group Base Specifications Issue 8 IEEE Std 1003.1-2024,\n+\t * Base Definitions, Environment Variables, 8.3 Other Environment\n+\t * Variables, TZ at https://pubs.opengroup.org/onlinepubs/9799919799/\n+\t */\n+\tswitch (c) {\n+\tcase '+':\n+\tcase '-':\n+\tcase '_':\n+\tcase '/':\n+\t\treturn 1;\n+\tdefault:\n+\t\treturn isalnum(c);\n+\t}\n+}\n+\n+ni_bool_t\n+ni_dhcp_check_posix_tzdbname(const char *str, size_t len)\n+{\n+\treturn ni_check_string_characters(str, len, ni_dhcp_valid_in_posix_tzdbname);\n+}\n+\n+static int\n+ni_dhcp_valid_in_posix_tzstring(int c)\n+{\n+\t/*\n+\t * The expanded form of the TZ format like:\n+\t *   stdoffset[dst[offset][,start[/time],end[/time]]]\n+\t *\n+\t * See https://datatracker.ietf.org/doc/html/rfc4833#section-4,\n+\t * The Open Group Base Specifications Issue 8 IEEE Std 1003.1-2024,\n+\t * Base Definitions, Environment Variables, 8.3 Other Environment\n+\t * Variables, TZ at https://pubs.opengroup.org/onlinepubs/9799919799/\n+\t */\n+\tswitch (c) {\n+\tcase '<':\n+\tcase '>':\n+\tcase '+':\n+\tcase '-':\n+\tcase '/':\n+\tcase ':':\n+\tcase '.':\n+\tcase ',':\n+\t\treturn 1;\n+\tdefault:\n+\t\treturn isalnum(c);\n+\t}\n+}\n+\n+ni_bool_t\n+ni_dhcp_check_posix_tzstring(const char *str, size_t len)\n+{\n+\tif (!str || len == 0)\n+\t\treturn FALSE;\n+\n+\t/* When it starts with a ':', the following string is implementation specific */\n+\tif (*str == ':')\n+\t\treturn ni_check_string_characters(str, len, ni_dhcp_valid_in_printable_string);\n+\telse\n+\t\treturn ni_check_string_characters(str, len, ni_dhcp_valid_in_posix_tzstring);\n+}\n+\n ni_bool_t\n ni_dhcp_check_user_class_id(const char *id, size_t len)\n {"},{"sha":"b11bc52a8a503fdd7a9f4c5933c988bde4dfd3fb","filename":"src/dhcp.h","status":"modified","additions":3,"deletions":0,"changes":3,"blob_url":"https://github.com/openSUSE/wicked/blob/6cb69874f5df67b6e22d599a3568a64a8db97e81/src%2Fdhcp.h","raw_url":"https://github.com/openSUSE/wicked/raw/6cb69874f5df67b6e22d599a3568a64a8db97e81/src%2Fdhcp.h","contents_url":"https://api.github.com/repos/openSUSE/wicked/contents/src%2Fdhcp.h?ref=6cb69874f5df67b6e22d599a3568a64a8db97e81","patch":"@@ -143,6 +143,9 @@ extern ni_var_array_t *\t\t\tni_dhcp_option_to_vars(const ni_dhcp_option_t *, const\n extern ni_bool_t\t\t\tni_dhcp_domain_encode(ni_buffer_t *, const char *, ni_bool_t);\n extern ni_bool_t\t\t\tni_dhcp_domain_decode(ni_buffer_t *, char **);\n \n+extern ni_bool_t\t\t\tni_dhcp_check_printable_string(const char *, size_t);\n+extern ni_bool_t\t\t\tni_dhcp_check_posix_tzdbname(const char *, size_t);\n+extern ni_bool_t\t\t\tni_dhcp_check_posix_tzstring(const char *, size_t);\n extern ni_bool_t\t\t\tni_dhcp_check_user_class_id(const char *, size_t);\n \n #endif /* WICKED_DHCP_H */"},{"sha":"afd88b6aadd71ab2ad4782fb1f0d8ccf800ef8a4","filename":"src/dhcp4/protocol.c","status":"modified","additions":53,"deletions":3,"changes":56,"blob_url":"https://github.com/openSUSE/wicked/blob/6cb69874f5df67b6e22d599a3568a64a8db97e81/src%2Fdhcp4%2Fprotocol.c","raw_url":"https://github.com/openSUSE/wicked/raw/6cb69874f5df67b6e22d599a3568a64a8db97e81/src%2Fdhcp4%2Fprotocol.c","contents_url":"https://api.github.com/repos/openSUSE/wicked/contents/src%2Fdhcp4%2Fprotocol.c?ref=6cb69874f5df67b6e22d599a3568a64a8db97e81","patch":"@@ -1804,7 +1804,7 @@ ni_dhcp4_option_get_printable(ni_buffer_t *bp, char **var, const char *what)\n \tif (ni_dhcp4_option_get_string(bp, &tmp, &len) < 0)\n \t\treturn -1;\n \n-\tif (!ni_check_printable(tmp, len)) {\n+\tif (!ni_dhcp_check_printable_string(tmp, len)) {\n \t\tni_warn(\"Discarded non-printable %s: '%s'\", what,\n \t\t\tni_print_suspect(tmp, len));\n \t\tfree(tmp);\n@@ -1817,6 +1817,50 @@ ni_dhcp4_option_get_printable(ni_buffer_t *bp, char **var, const char *what)\n \treturn 0;\n }\n \n+static int\n+ni_dhcp4_option_get_tzdbname(ni_buffer_t *bp, char **var, const char *what)\n+{\n+\tunsigned int len;\n+\tchar *tmp = NULL;\n+\n+\tif (ni_dhcp4_option_get_string(bp, &tmp, &len) < 0)\n+\t\treturn -1;\n+\n+\tif (!ni_dhcp_check_posix_tzdbname(tmp, len)) {\n+\t\tni_warn(\"Discarded suspect %s: '%s'\", what,\n+\t\t\tni_print_suspect(tmp, len));\n+\t\tfree(tmp);\n+\t\treturn -1;\n+\t}\n+\n+\tif (*var)\n+\t\tfree(*var);\n+\t*var = tmp;\n+\treturn 0;\n+}\n+\n+static int\n+ni_dhcp4_option_get_tzstring(ni_buffer_t *bp, char **var, const char *what)\n+{\n+\tunsigned int len;\n+\tchar *tmp = NULL;\n+\n+\tif (ni_dhcp4_option_get_string(bp, &tmp, &len) < 0)\n+\t\treturn -1;\n+\n+\tif (!ni_dhcp_check_posix_tzstring(tmp, len)) {\n+\t\tni_warn(\"Discarded suspect %s: '%s'\", what,\n+\t\t\tni_print_suspect(tmp, len));\n+\t\tfree(tmp);\n+\t\treturn -1;\n+\t}\n+\n+\tif (*var)\n+\t\tfree(*var);\n+\t*var = tmp;\n+\treturn 0;\n+}\n+\n static int\n ni_dhcp4_option_get_netbios_type(ni_buffer_t *bp, unsigned int *type)\n {\n@@ -2127,6 +2171,12 @@ ni_dhcp4_parse_response(const ni_dhcp4_config_t *config, const ni_dhcp4_message_\n \t\t\tni_dhcp4_decode_address_list(&buf, &lease->nds_servers);\n \t\t\tbreak;\n \t\tcase DHCP4_NDS_CTX:\n+\t\t\t/*\n+\t\t\t * Note: Multiple instances of the same option are concatenated\n+\t\t\t *       already, so there is one context string --> this case\n+\t\t\t *       is called once, see also RFC 2241 Section 4.\n+\t\t\t *       Just the lease is using a string array for storage.\n+\t\t\t */\n \t\t\tif (!ni_dhcp4_option_get_printable(&buf, &tmp, \"nds-context\"))\n \t\t\t\tni_string_array_append(&lease->nds_context, tmp);\n \t\t\tni_string_free(&tmp);\n@@ -2157,12 +2207,12 @@ ni_dhcp4_parse_response(const ni_dhcp4_config_t *config, const ni_dhcp4_message_\n \t\t\tbreak;\n \n \t\tcase DHCP4_POSIX_TZ_STRING:\n-\t\t\tni_dhcp4_option_get_printable(&buf, &lease->posix_tz_string,\n+\t\t\tni_dhcp4_option_get_tzstring(&buf, &lease->posix_tz_string,\n \t\t\t\t\t\t\t\"posix-tz-string\");\n \t\t\tbreak;\n \n \t\tcase DHCP4_POSIX_TZ_DBNAME:\n-\t\t\tni_dhcp4_option_get_printable(&buf, &lease->posix_tz_dbname,\n+\t\t\tni_dhcp4_option_get_tzdbname(&buf, &lease->posix_tz_dbname,\n \t\t\t\t\t\t\t\"posix-tz-dbname\");\n \t\t\tbreak;\n "},{"sha":"1647e3c9e1a0ee8a77bd41963ea9f8c0cb8670a4","filename":"src/dhcp6/protocol.c","status":"modified","additions":6,"deletions":6,"changes":12,"blob_url":"https://github.com/openSUSE/wicked/blob/6cb69874f5df67b6e22d599a3568a64a8db97e81/src%2Fdhcp6%2Fprotocol.c","raw_url":"https://github.com/openSUSE/wicked/raw/6cb69874f5df67b6e22d599a3568a64a8db97e81/src%2Fdhcp6%2Fprotocol.c","contents_url":"https://api.github.com/repos/openSUSE/wicked/contents/src%2Fdhcp6%2Fprotocol.c?ref=6cb69874f5df67b6e22d599a3568a64a8db97e81","patch":"@@ -982,7 +982,7 @@ ni_dhcp6_option_get_printable_array(ni_buffer_t *bp, ni_string_array_t *result,\n \t\tif (ni_dhcp6_option_gets(&pbuff, &param) < 0)\n \t\t\tgoto failure;\n \n-\t\tif (ni_check_printable(param, len)) {\n+\t\tif (ni_dhcp_check_printable_string(param, len)) {\n \t\t\tni_string_array_append(&temp, param);\n \t\t} else {\n \t\t\tni_warn(\"Discarded suspect %s[%u]: '%s'\",\n@@ -2301,7 +2301,7 @@ ni_dhcp6_option_parse_ia_address(ni_buffer_t *bp, ni_dhcp6_ia_t *ia, uint16_t ad\n \t\t\t} else {\n \t\t\t\tsize_t len = ni_string_len(iadr->status.message);\n \n-\t\t\t\tif (len && !ni_check_printable(iadr->status.message, len)) {\n+\t\t\t\tif (len && !ni_dhcp_check_printable_string(iadr->status.message, len)) {\n \t\t\t\t\tni_debug_dhcp(\"%s.%s.%s: discarded non-printable\"\n \t\t\t\t\t\t\t\" status message: %s\",\n \t\t\t\t\t\tni_dhcp6_option_name(ia->type),\n@@ -2406,7 +2406,7 @@ __ni_dhcp6_option_parse_ia_options(ni_buffer_t *bp,  ni_dhcp6_ia_t *ia)\n \t\t\t} else {\n \t\t\t\tsize_t len = ni_string_len(ia->status.message);\n \n-\t\t\t\tif (len && !ni_check_printable(ia->status.message, len)) {\n+\t\t\t\tif (len && !ni_dhcp_check_printable_string(ia->status.message, len)) {\n \t\t\t\t\tni_debug_dhcp(\"%s.%s: discarded non-printable\"\n \t\t\t\t\t\t\t\" status message: %s\",\n \t\t\t\t\t\tni_dhcp6_option_name(ia->type),\n@@ -2888,7 +2888,7 @@ ni_dhcp6_parse_client_options(ni_dhcp6_device_t *dev, ni_dhcp6_message_t *msg, n\n \t\t\tif (ni_dhcp6_option_get_status(&optbuf, lease->dhcp6.status) == 0) {\n \t\t\t\tsize_t len = ni_string_len(lease->dhcp6.status->message);\n \n-\t\t\t\tif (len && !ni_check_printable(lease->dhcp6.status->message, len)) {\n+\t\t\t\tif (len && !ni_dhcp_check_printable_string(lease->dhcp6.status->message, len)) {\n \t\t\t\t\tni_debug_dhcp(\"%s: discarded non-printable\"\n \t\t\t\t\t\t\t\" status message: %s\",\n \t\t\t\t\t\tni_dhcp6_option_name(option),\n@@ -3024,7 +3024,7 @@ ni_dhcp6_parse_client_options(ni_dhcp6_device_t *dev, ni_dhcp6_message_t *msg, n\n \t\tcase NI_DHCP6_OPTION_POSIX_TZ_STRING:\n \t\t\tif (ni_dhcp6_option_gets(&optbuf, &str) == 0) {\n \t\t\t\tsize_t len = ni_string_len(str);\n-\t\t\t\tif (ni_check_printable(str, len)) {\n+\t\t\t\tif (ni_dhcp_check_posix_tzstring(str, len)) {\n \t\t\t\t\tni_string_dup(&lease->posix_tz_string, str);\n \t\t\t\t\tni_debug_dhcp(\"%s: %s\", ni_dhcp6_option_name(option), str);\n \t\t\t\t} else {\n@@ -3038,7 +3038,7 @@ ni_dhcp6_parse_client_options(ni_dhcp6_device_t *dev, ni_dhcp6_message_t *msg, n\n \t\tcase NI_DHCP6_OPTION_POSIX_TZ_DBNAME:\n \t\t\tif (ni_dhcp6_option_gets(&optbuf, &str) == 0) {\n \t\t\t\tsize_t len = ni_string_len(str);\n-\t\t\t\tif (ni_check_pathname(str, len)) {\n+\t\t\t\tif (ni_dhcp_check_posix_tzdbname(str, len)) {\n \t\t\t\t\tni_string_dup(&lease->posix_tz_dbname, str);\n \t\t\t\t\tni_debug_dhcp(\"%s: %s\", ni_dhcp6_option_name(option), str);\n \t\t\t\t} else {"},{"sha":"9e1038402632c1b825c20a34774b5dfd240e079e","filename":"src/leaseinfo.c","status":"modified","additions":80,"deletions":16,"changes":96,"blob_url":"https://github.com/openSUSE/wicked/blob/6cb69874f5df67b6e22d599a3568a64a8db97e81/src%2Fleaseinfo.c","raw_url":"https://github.com/openSUSE/wicked/raw/6cb69874f5df67b6e22d599a3568a64a8db97e81/src%2Fleaseinfo.c","contents_url":"https://api.github.com/repos/openSUSE/wicked/contents/src%2Fleaseinfo.c?ref=6cb69874f5df67b6e22d599a3568a64a8db97e81","patch":"@@ -96,23 +96,72 @@ __ni_keyword_format(char **key, const char *prefix,\n \t\treturn ni_string_printf(key, \"%s%s\", prefix, var);\n }\n \n+static const char *\n+ni_leaseinfo_quote_string_value(ni_stringbuf_t *buf, const char *str)\n+{\n+\tconst unsigned char *ptr = (const unsigned char *)str;\n+\tint quoted = 0;\n+\n+\tif (!buf)\n+\t\treturn NULL;\n+\n+\tni_stringbuf_destroy(buf);\n+\tif (ni_string_empty(str)) {\n+\t\tni_stringbuf_puts(buf, \"''\");\n+\t\treturn buf->string;\n+\t}\n+\n+\t/*\n+\t * We're using single quotes to avoid expansions\n+\t * (also for foo -> 'foo' that does not need it).\n+\t * It's checked printable, but let's do it again.\n+\t * There is no need for any control characters,\n+\t * just to \\-escape the single quotes … if any,\n+\t * outside of the single quoted string value.\n+\t */\n+\tif (!ni_check_printable(str, ni_string_len(str)))\n+\t\treturn NULL;\n+\n+\tfor ( ; *ptr; ptr++) {\n+\t\tif (*ptr == '\\'') {\n+\t\t\tif (quoted) {\n+\t\t\t\tni_stringbuf_putc(buf, '\\'');\n+\t\t\t\tquoted = 0;\n+\t\t\t}\n+\t\t\tni_stringbuf_puts(buf, \"\\\\'\");\n+\t\t} else {\n+\t\t\tif (!quoted) {\n+\t\t\t\tni_stringbuf_putc(buf, '\\'');\n+\t\t\t\tquoted = 1;\n+\t\t\t}\n+\t\t\tni_stringbuf_putc(buf, *ptr);\n+\t\t}\n+\t}\n+\n+\tif (quoted)\n+\t\tni_stringbuf_putc(buf, '\\'');\n+\n+\treturn buf->string;\n+}\n+\n static void\n __ni_leaseinfo_print_string(FILE *out, const char *prefix, const char *name,\n \t\t\tconst char *val, const char *default_val,\n \t\t\tunsigned int index)\n {\n+\tni_stringbuf_t buf = NI_STRINGBUF_INIT_DYNAMIC;\n \tchar *key = NULL;\n-\tconst char *val_to_print = NULL;\n \n \tif (ni_string_empty(val) && !default_val)\n \t\treturn;\n \n-\tval_to_print = val ? val : default_val;\n+\tif (!__ni_keyword_format(&key, prefix, name, index))\n+\t\treturn;\n \n-\tfprintf(out, \"%s='%s'\\n\", __ni_keyword_format\n-\t\t(&key, prefix, name, index),\n-\t\tval_to_print);\n+\tif (ni_leaseinfo_quote_string_value(&buf, val ?: default_val))\n+\t\tfprintf(out, \"%s=%s\\n\", key, buf.string);\n \n+\tni_stringbuf_destroy(&buf);\n \tni_string_free(&key);\n }\n \n@@ -121,23 +170,29 @@ __ni_leaseinfo_print_string_array(FILE *out, const char *prefix, const char *nam\n \t\t\t\tconst ni_string_array_t *str_arr, const char *sep,\n \t\t\t\tunsigned int index)\n {\n+\tni_stringbuf_t buf = NI_STRINGBUF_INIT_DYNAMIC;\n+\tni_stringbuf_t val = NI_STRINGBUF_INIT_DYNAMIC;\n \tchar *key = NULL;\n-\tunsigned int i;\n \n \tif (!str_arr || str_arr->count == 0)\n \t\treturn;\n \n-\tif (!sep)\n-\t\tsep = \" \";\n-\n-\tfprintf(out, \"%s='\", __ni_keyword_format\n-\t\t(&key, prefix, name, index));\n+\tif (!__ni_keyword_format(&key, prefix, name, index))\n+\t\treturn;\n \n-\tfor (i = 0; i < str_arr->count; ++i) {\n-\t\tfprintf(out, \"%s%s\", i ? sep : \"\", str_arr->data[i]);\n+\t/*\n+\t * Note: it's an array of (server) ip-addresses as strings\n+\t * or domains without spaces/quotes, stored/converted into\n+\t * a string array and separated by a simple space here and\n+\t * the list is quoted using single quote.\n+\t */\n+\tif (ni_stringbuf_join(&val, str_arr, sep ?: \" \")) {\n+\t\tif (ni_leaseinfo_quote_string_value(&buf, val.string))\n+\t\t\tfprintf(out, \"%s=%s\\n\", key, buf.string);\n \t}\n-\tfprintf(out, \"'\\n\");\n \n+\tni_stringbuf_destroy(&buf);\n+\tni_stringbuf_destroy(&val);\n \tni_string_free(&key);\n }\n \n@@ -732,8 +787,17 @@ __ni_leaseinfo_dump(FILE *out, const ni_addrconf_lease_t *lease,\n \t\t\t\t\t&lease->nds_servers, \" \", 0);\n \n \t/* NDS Context */\n-\t__ni_leaseinfo_print_string_array(out, prefix, \"NDSCONTEXT\",\n-\t\t\t\t\t&lease->nds_context, \" \", 0);\n+\t/*\n+\t * Note: There is a single nds context string option in dhcp4,\n+\t *       but the lease is using a string array to store it.\n+\t *       If there are multiple, use indexed NDSCONTEXT[_X] key,\n+\t *       the 1st one without: NDSCONTEXT='…', NDSCONTEXT_1='…'.\n+\t */\n+\tfor (i = 0; i < lease->nds_context.count; ++i) {\n+\t\tconst char *ctx = lease->nds_context.data[i];\n+\n+\t\t__ni_leaseinfo_print_string(out, prefix, \"NDSCONTEXT\", ctx, NULL, i);\n+\t}\n \n \t/* NDS Tree */\n \t__ni_leaseinfo_print_string(out, prefix, \"NDSTREE\", lease->nds_tree,"},{"sha":"e930a5b976aac000ab8142ee552b720d2f914a90","filename":"src/util.c","status":"modified","additions":15,"deletions":0,"changes":15,"blob_url":"https://github.com/openSUSE/wicked/blob/6cb69874f5df67b6e22d599a3568a64a8db97e81/src%2Futil.c","raw_url":"https://github.com/openSUSE/wicked/raw/6cb69874f5df67b6e22d599a3568a64a8db97e81/src%2Futil.c","contents_url":"https://api.github.com/repos/openSUSE/wicked/contents/src%2Futil.c?ref=6cb69874f5df67b6e22d599a3568a64a8db97e81","patch":"@@ -3832,6 +3832,21 @@ ni_check_printable(const char *str, size_t len)\n \treturn TRUE;\n }\n \n+ni_bool_t\n+ni_check_string_characters(const char *str, size_t len, int (*valid)(int))\n+{\n+\tconst unsigned char *ptr = (const unsigned char *)str;\n+\n+\tif (!str || len == 0)\n+\t\treturn FALSE;\n+\n+\tfor ( ; *ptr && len-- > 0; ++ptr) {\n+\t\tif (!valid(*ptr))\n+\t\t\treturn FALSE;\n+\t}\n+\treturn TRUE;\n+}\n+\n const char *\n ni_print_suspect(const char *str, size_t len)\n {"},{"sha":"be0e312bd917506ab46d87def874a4fea9243e5b","filename":"wicked.spec.in","status":"modified","additions":21,"deletions":1,"changes":22,"blob_url":"https://github.com/openSUSE/wicked/blob/6cb69874f5df67b6e22d599a3568a64a8db97e81/wicked.spec.in","raw_url":"https://github.com/openSUSE/wicked/raw/6cb69874f5df67b6e22d599a3568a64a8db97e81/wicked.spec.in","contents_url":"https://api.github.com/repos/openSUSE/wicked/contents/wicked.spec.in?ref=6cb69874f5df67b6e22d599a3568a64a8db97e81","patch":"@@ -1,7 +1,7 @@\n #\n # spec file for package wicked\n #\n-# Copyright (c) 2024 SUSE LLC\n+# Copyright (c) 2026 SUSE LLC and contributors\n #\n # All modifications and additions to the file contributed by third parties\n # remain the property of their copyright owners, unless otherwise agreed\n@@ -97,6 +97,7 @@ Requires(pre):       util-linux\n BuildRequires:  systemd-rpm-macros\n BuildRequires:  pkgconfig(libsystemd)\n %{?systemd_requires}\n+%{?regenerate_initrd_requires}\n %if 0%{?suse_version:1}\n Requires(pre):  %fillup_prereq\n Requires:       sysconfig-netconfig\n@@ -269,6 +270,15 @@ esac\n # restart wickedd after upgrade\n %{service_del_postun wickedd.service}\n \n+%pre\n+version=$(wicked --version 2>/dev/null)\n+version=\"${version#* }\"\n+version=\"9${version//./}\"\n+# regenereate initrd in case wicked is used in it (bsc#1265221)\n+if test $(($version)) -le 90678 ; then\n+\t%__mkdir_p -m 0755 \"%{wicked_statedir}/regenerate-initrd\" || :\n+fi\n+\n %post\n /sbin/ldconfig\n %{fillup_only -dns config wicked network}\n@@ -282,6 +292,16 @@ if test -f %_sysconfdir/wicked/client-redfish.xml -a \\\n \t\t %_sysconfdir/wicked/client-firmware.xml || :\n fi\n rm -f -- %_sysconfdir/wicked/client-redfish.xml || :\n+if test -d \"%{wicked_statedir}/regenerate-initrd\" ; then\n+\t%{?regenerate_initrd_post}\n+\t:\n+fi\n+\n+%posttrans\n+if test -d \"%{wicked_statedir}/regenerate-initrd\" ; then\n+\t%{?regenerate_initrd_posttrans}\n+\t:\n+fi\n \n %postun\n /sbin/ldconfig"}]}