{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":41013061,"defaultBranch":"master","name":"rust-i2cdev","ownerLogin":"rust-embedded","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2015-08-19T04:21:00.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/17707713?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1715261699.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"d44de85735152d10c35c2a2c2d1be7d4fc6316b6","ref":"refs/heads/prep-0.6.1","pushedAt":"2024-05-09T13:34:59.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"nastevens","name":"Nick Stevens","path":"/nastevens","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1500008?s=80&v=4"},"commit":{"message":"Prepare 0.6.1 release","shortMessageHtmlLink":"Prepare 0.6.1 release"}},{"before":"a7a4dce7eedffacdfa7a84897969265ab54b2da1","after":null,"ref":"refs/heads/gh-readonly-queue/master/pr-85-bd5f200c648bfa69619d618624155e5a264ac890","pushedAt":"2024-05-08T13:58:37.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"bd5f200c648bfa69619d618624155e5a264ac890","after":"a7a4dce7eedffacdfa7a84897969265ab54b2da1","ref":"refs/heads/master","pushedAt":"2024-05-08T13:58:36.000Z","pushType":"merge_queue_merge","commitsCount":6,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Merge pull request #85 from ohunter/impl_no_start\n\nFulfillment of the I2c trait contract","shortMessageHtmlLink":"Merge pull request #85 from ohunter/impl_no_start"}},{"before":null,"after":"a7a4dce7eedffacdfa7a84897969265ab54b2da1","ref":"refs/heads/gh-readonly-queue/master/pr-85-bd5f200c648bfa69619d618624155e5a264ac890","pushedAt":"2024-05-08T13:54:21.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Merge pull request #85 from ohunter/impl_no_start\n\nFulfillment of the I2c trait contract","shortMessageHtmlLink":"Merge pull request #85 from ohunter/impl_no_start"}},{"before":"bd5f200c648bfa69619d618624155e5a264ac890","after":null,"ref":"refs/heads/gh-readonly-queue/master/pr-83-594860ebbaedf8a68ff5e90995d8bbd4ad39e52d","pushedAt":"2024-01-18T20:09:41.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"594860ebbaedf8a68ff5e90995d8bbd4ad39e52d","after":"bd5f200c648bfa69619d618624155e5a264ac890","ref":"refs/heads/master","pushedAt":"2024-01-18T20:09:40.000Z","pushType":"merge_queue_merge","commitsCount":5,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Merge pull request #83 from chiefnoah/master\n\nPrevent underflow when using a MockI2CDevice with a RegisterMap.offset = 0x0","shortMessageHtmlLink":"Merge pull request #83 from chiefnoah/master"}},{"before":null,"after":"bd5f200c648bfa69619d618624155e5a264ac890","ref":"refs/heads/gh-readonly-queue/master/pr-83-594860ebbaedf8a68ff5e90995d8bbd4ad39e52d","pushedAt":"2024-01-18T20:05:23.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Merge pull request #83 from chiefnoah/master\n\nPrevent underflow when using a MockI2CDevice with a RegisterMap.offset = 0x0","shortMessageHtmlLink":"Merge pull request #83 from chiefnoah/master"}},{"before":"e8cd6d97bff5e1c8b9545465b5e64951015189f8","after":null,"ref":"refs/tags/v0.6.0","pushedAt":"2023-08-09T07:58:02.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"eldruin","name":"Diego Barrios Romero","path":"/eldruin","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43125?s=80&v=4"}},{"before":"594860ebbaedf8a68ff5e90995d8bbd4ad39e52d","after":null,"ref":"refs/heads/gh-readonly-queue/master/pr-81-9516c1ff23905f76c8275afa8a06b901b5b5ca35","pushedAt":"2023-08-09T07:54:34.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"9516c1ff23905f76c8275afa8a06b901b5b5ca35","after":"594860ebbaedf8a68ff5e90995d8bbd4ad39e52d","ref":"refs/heads/master","pushedAt":"2023-08-09T07:54:33.000Z","pushType":"merge_queue_merge","commitsCount":8,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Merge pull request #81 from eldruin/prepare-0.6.0\n\nPrepare 0.6.0 release","shortMessageHtmlLink":"Merge pull request #81 from eldruin/prepare-0.6.0"}},{"before":null,"after":"594860ebbaedf8a68ff5e90995d8bbd4ad39e52d","ref":"refs/heads/gh-readonly-queue/master/pr-81-9516c1ff23905f76c8275afa8a06b901b5b5ca35","pushedAt":"2023-08-09T07:51:44.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Merge pull request #81 from eldruin/prepare-0.6.0\n\nPrepare 0.6.0 release","shortMessageHtmlLink":"Merge pull request #81 from eldruin/prepare-0.6.0"}},{"before":"9516c1ff23905f76c8275afa8a06b901b5b5ca35","after":null,"ref":"refs/heads/gh-readonly-queue/master/pr-80-c71d7719c31116df9de21ffdb5b5863043786801","pushedAt":"2023-06-28T07:44:06.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":null},{"before":"c71d7719c31116df9de21ffdb5b5863043786801","after":"9516c1ff23905f76c8275afa8a06b901b5b5ca35","ref":"refs/heads/master","pushedAt":"2023-06-28T07:44:05.000Z","pushType":"merge_queue_merge","commitsCount":2,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Merge pull request #80 from eldruin/switch-to-ghmq\n\nSwitch to GHMQ","shortMessageHtmlLink":"Merge pull request #80 from eldruin/switch-to-ghmq"}},{"before":"c71d7719c31116df9de21ffdb5b5863043786801","after":"9516c1ff23905f76c8275afa8a06b901b5b5ca35","ref":"refs/heads/gh-readonly-queue/master/pr-80-c71d7719c31116df9de21ffdb5b5863043786801","pushedAt":"2023-06-28T07:40:29.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Merge pull request #80 from eldruin/switch-to-ghmq\n\nSwitch to GHMQ","shortMessageHtmlLink":"Merge pull request #80 from eldruin/switch-to-ghmq"}},{"before":"987143a82b0a9d64f07abdbe88c3ac320e14a871","after":"c71d7719c31116df9de21ffdb5b5863043786801","ref":"refs/heads/master","pushedAt":"2023-05-09T16:13:33.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"bors[bot]","name":null,"path":"/apps/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/1847?s=80&v=4"},"commit":{"message":"Merge #79\n\n79: Minor improvements to top-level module documentation r=eldruin a=kevinmehall\n\n\n\nCo-authored-by: Kevin Mehall ","shortMessageHtmlLink":"Merge #79"}},{"before":"bd0422532e3a6b68af2f92e43c640524b3926396","after":null,"ref":"refs/heads/staging.tmp","pushedAt":"2023-05-09T16:08:38.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"bors[bot]","name":null,"path":"/apps/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/1847?s=80&v=4"}},{"before":"987143a82b0a9d64f07abdbe88c3ac320e14a871","after":"c71d7719c31116df9de21ffdb5b5863043786801","ref":"refs/heads/staging","pushedAt":"2023-05-09T16:08:38.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"bors[bot]","name":null,"path":"/apps/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/1847?s=80&v=4"},"commit":{"message":"Merge #79\n\n79: Minor improvements to top-level module documentation r=eldruin a=kevinmehall\n\n\n\nCo-authored-by: Kevin Mehall ","shortMessageHtmlLink":"Merge #79"}},{"before":"dc0c71dac8ccf01c8d3718217946508321b4caef","after":"bd0422532e3a6b68af2f92e43c640524b3926396","ref":"refs/heads/staging.tmp","pushedAt":"2023-05-09T16:08:37.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"bors[bot]","name":null,"path":"/apps/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/1847?s=80&v=4"},"commit":{"message":"[ci skip][skip ci][skip netlify] -bors-staging-tmp-79","shortMessageHtmlLink":"[ci skip][skip ci][skip netlify] -bors-staging-tmp-79"}},{"before":null,"after":"dc0c71dac8ccf01c8d3718217946508321b4caef","ref":"refs/heads/staging.tmp","pushedAt":"2023-05-09T16:08:36.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"bors[bot]","name":null,"path":"/apps/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/1847?s=80&v=4"},"commit":{"message":"[ci skip][skip ci][skip netlify]","shortMessageHtmlLink":"[ci skip][skip ci][skip netlify]"}},{"before":"f8329465dcb9a6b72cbdf7189fb7818e45d8c6d0","after":"987143a82b0a9d64f07abdbe88c3ac320e14a871","ref":"refs/heads/master","pushedAt":"2023-05-09T08:02:15.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"bors[bot]","name":null,"path":"/apps/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/1847?s=80&v=4"},"commit":{"message":"Merge #78\n\n78: Fix unsound lifetime on LinuxI2CMessage r=eldruin a=kevinmehall\n\nThe following code currently compiles, but passes a dangling pointer to the kernel, which will write to deallocated memory.\r\n\r\n```rust\r\nextern crate i2cdev;\r\n\r\nuse i2cdev::core::*;\r\nuse i2cdev::linux::{LinuxI2CBus, LinuxI2CMessage};\r\n\r\nconst SLAVE_ADDR: u16 = 0x57;\r\n\r\nfn main() {\r\n let mut dev = LinuxI2CBus::new(\"/dev/i2c-1\").unwrap();\r\n\r\n let mut v = vec![0, 0, 0];\r\n\r\n let mut msgs = [\r\n LinuxI2CMessage::write(&[0x01]).with_address(SLAVE_ADDR),\r\n LinuxI2CMessage::read(&mut v).with_address(SLAVE_ADDR),\r\n ];\r\n\r\n drop(v);\r\n // Now pointer in in the message is pointing to the deallocated Vec\r\n\r\n dev.transfer(&mut msgs).unwrap();\r\n}\r\n```\r\n\r\nThe lifetime parameter on the type alias doesn't do anything ([arguably a rustc bug that this is not an error](https://github.com/rust-lang/rust/issues/82365)). The internal `i2c_msg` type without a lifetime parameter of its own does not actually enforce that the borrowed buffer is still valid at the time it is passed to the ioctl.\n\nCo-authored-by: Kevin Mehall \nCo-authored-by: Diego Barrios Romero ","shortMessageHtmlLink":"Merge #78"}},{"before":"790697b4ff3f7abf5cf2ea10db3b3a318194be65","after":null,"ref":"refs/heads/staging.tmp","pushedAt":"2023-05-09T07:59:47.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"bors[bot]","name":null,"path":"/apps/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/1847?s=80&v=4"}},{"before":"f8329465dcb9a6b72cbdf7189fb7818e45d8c6d0","after":"987143a82b0a9d64f07abdbe88c3ac320e14a871","ref":"refs/heads/staging","pushedAt":"2023-05-09T07:59:45.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"bors[bot]","name":null,"path":"/apps/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/1847?s=80&v=4"},"commit":{"message":"Merge #78\n\n78: Fix unsound lifetime on LinuxI2CMessage r=eldruin a=kevinmehall\n\nThe following code currently compiles, but passes a dangling pointer to the kernel, which will write to deallocated memory.\r\n\r\n```rust\r\nextern crate i2cdev;\r\n\r\nuse i2cdev::core::*;\r\nuse i2cdev::linux::{LinuxI2CBus, LinuxI2CMessage};\r\n\r\nconst SLAVE_ADDR: u16 = 0x57;\r\n\r\nfn main() {\r\n let mut dev = LinuxI2CBus::new(\"/dev/i2c-1\").unwrap();\r\n\r\n let mut v = vec![0, 0, 0];\r\n\r\n let mut msgs = [\r\n LinuxI2CMessage::write(&[0x01]).with_address(SLAVE_ADDR),\r\n LinuxI2CMessage::read(&mut v).with_address(SLAVE_ADDR),\r\n ];\r\n\r\n drop(v);\r\n // Now pointer in in the message is pointing to the deallocated Vec\r\n\r\n dev.transfer(&mut msgs).unwrap();\r\n}\r\n```\r\n\r\nThe lifetime parameter on the type alias doesn't do anything ([arguably a rustc bug that this is not an error](https://github.com/rust-lang/rust/issues/82365)). The internal `i2c_msg` type without a lifetime parameter of its own does not actually enforce that the borrowed buffer is still valid at the time it is passed to the ioctl.\n\nCo-authored-by: Kevin Mehall \nCo-authored-by: Diego Barrios Romero ","shortMessageHtmlLink":"Merge #78"}},{"before":"8a3c8ea98a47be849b2e56ec5b50580fb452ce9e","after":"790697b4ff3f7abf5cf2ea10db3b3a318194be65","ref":"refs/heads/staging.tmp","pushedAt":"2023-05-09T07:59:44.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"bors[bot]","name":null,"path":"/apps/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/1847?s=80&v=4"},"commit":{"message":"[ci skip][skip ci][skip netlify] -bors-staging-tmp-78","shortMessageHtmlLink":"[ci skip][skip ci][skip netlify] -bors-staging-tmp-78"}},{"before":null,"after":"8a3c8ea98a47be849b2e56ec5b50580fb452ce9e","ref":"refs/heads/staging.tmp","pushedAt":"2023-05-09T07:59:44.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"bors[bot]","name":null,"path":"/apps/bors","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/1847?s=80&v=4"},"commit":{"message":"[ci skip][skip ci][skip netlify]","shortMessageHtmlLink":"[ci skip][skip ci][skip netlify]"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAERacfpQA","startCursor":null,"endCursor":null}},"title":"Activity ยท rust-embedded/rust-i2cdev"}