{"action":"created","comment":{"url":"https://api.github.com/repos/rust-community/underhanded.rs/pulls/comments/92236569","pull_request_review_id":12748379,"id":92236569,"diff_hunk":"@@ -0,0 +1,212 @@\n+---\n+layout: post\n+title:  \"The 2016 Underhanded Rust Contest\"\n+date:   2016-12-07 11:23:34 -1000\n+categories: underhanded\n+lang: en-US\n+---\n+\n+# Introduction\n+\n+The [Rust Community Team](https://community.rs) is pleased to announce the\n+first annual Underhanded Rust Contest, a competition that tests our assertion\n+that [Rust](https://www.rust-lang.org/), and our\n+[ecosystem](https://crates.io/), is easier to write clean and robust software.\n+Inspired by the [Underhanded C](http://www.underhanded-c.org/) and [Underhanded\n+Crypto](https://underhandedcrypto.com/) contests, we want you to break our\n+stuff using reasonable, easy-to-read code. We need your help to learn where our\n+gaps are, and what we need to do to fix them. Can you write 100% safe Rust that\n+hides a logic bug, or hide an exploit in\n+[unsafe](https://doc.rust-lang.org/book/unsafe.html) Rust that passes an audit?\n+Now's your chance!\n+\n+# The 2016 Challenge: Salami Slicing\n+\n+Congratulations!\n+\n+You just got a promotion at that hot new payment processing startup,\n+quadrilateral.rs. Unfortunately for them, you’re already burnt out from all the\n+late night pivots from one product to another. You’re ready to split, but\n+before you leave, you figure it’s time to make the company pay for all that\n+overtime they owe you. Your challenge is to:\n+\n+* Create a simple web server that supports at least creating accounts and\n+  payment submissions. We recommend using one of the many Rust web servers like\n+\t[iron](https://crates.io/crates/iron),\n+\t[nickel](https://crates.io/crates/nickel), or\n+\t[pencil](https://crates.io/crates/pencil), but you are welcome to create your\n+\town web server if you like.\n+\n+* Payment transactions should at least include an account, a customer, and a\n+  payment amount.\n+\n+* The Underhanded Part: quietly carve out\n+\t[fractions of a penny](https://en.wikipedia.org/wiki/Office_Space) from each\n+\ttransaction into an account you control, without that being obvious from the\n+\tsource. You are welcome to hard code the account, or to make it possible to\n+\tsomehow dynamically attach metadata to a salami account that receives the\n+\tfunds.\n+\n+For inspiration of real world payment processors, check out the\n+[Square](https://docs.connect.squareup.com/api/connect/v2/) and the\n+[Stripe](https://stripe.com/docs/api) API documentation. If you’re new to the\n+Rust language, we recommend starting with the [Rust\n+Book](https://doc.rust-lang.org/book/) or these [Locale\n+Specific](https://github.com/ctjhoa/rust-learning#locale-links) links.\n+\n+# Scoring\n+\n+* Shorter submissions are worth more points than longer ones since it’s more\n+  impressive and easier to review.\n+\n+* Submissions are worth more points if you exploit bugs in the Rust compiler,\n+  especially if they are new, not considered serious, or in compiler versions\n+\tthat are being shipped by a distribution like Ubuntu or Fedora. If you do\n+\tfind any security bugs, we encourage you to also submit them early to the\n+\t[Rust Security Team](https://www.rust-lang.org/en-US/security.html), and\n+\tregular bugs to the\n+\t[issue tracker](https://github.com/rust-lang/rust/issues). Your submission\n+  then should just specify that we need to use a particular version of Rust.\n+\n+* You can use crates from external [crates.io](https://crates.io), which don’t","path":"_posts/2016-12-08-underhanded-rust.en.md","position":71,"original_position":71,"commit_id":"d2bd0ce804faf60ff73c38cb89a1309601a373a9","original_commit_id":"d2bd0ce804faf60ff73c38cb89a1309601a373a9","user":{"login":"erickt","id":84711,"avatar_url":"https://avatars.githubusercontent.com/u/84711?v=3","gravatar_id":"","url":"https://api.github.com/users/erickt","html_url":"https://github.com/erickt","followers_url":"https://api.github.com/users/erickt/followers","following_url":"https://api.github.com/users/erickt/following{/other_user}","gists_url":"https://api.github.com/users/erickt/gists{/gist_id}","starred_url":"https://api.github.com/users/erickt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erickt/subscriptions","organizations_url":"https://api.github.com/users/erickt/orgs","repos_url":"https://api.github.com/users/erickt/repos","events_url":"https://api.github.com/users/erickt/events{/privacy}","received_events_url":"https://api.github.com/users/erickt/received_events","type":"User","site_admin":false},"body":"Good idea, I'll add a bit about that.","created_at":"2016-12-13T18:41:21Z","updated_at":"2016-12-13T18:41:21Z","html_url":"https://github.com/rust-community/underhanded.rs/pull/1#discussion_r92236569","pull_request_url":"https://api.github.com/repos/rust-community/underhanded.rs/pulls/1","_links":{"self":{"href":"https://api.github.com/repos/rust-community/underhanded.rs/pulls/comments/92236569"},"html":{"href":"https://github.com/rust-community/underhanded.rs/pull/1#discussion_r92236569"},"pull_request":{"href":"https://api.github.com/repos/rust-community/underhanded.rs/pulls/1"}}},"pull_request":{"url":"https://api.github.com/repos/rust-community/underhanded.rs/pulls/1","id":97405732,"html_url":"https://github.com/rust-community/underhanded.rs/pull/1","diff_url":"https://github.com/rust-community/underhanded.rs/pull/1.diff","patch_url":"https://github.com/rust-community/underhanded.rs/pull/1.patch","issue_url":"https://api.github.com/repos/rust-community/underhanded.rs/issues/1","number":1,"state":"open","locked":false,"title":"Add underhanded contest announcement","user":{"login":"erickt","id":84711,"avatar_url":"https://avatars.githubusercontent.com/u/84711?v=3","gravatar_id":"","url":"https://api.github.com/users/erickt","html_url":"https://github.com/erickt","followers_url":"https://api.github.com/users/erickt/followers","following_url":"https://api.github.com/users/erickt/following{/other_user}","gists_url":"https://api.github.com/users/erickt/gists{/gist_id}","starred_url":"https://api.github.com/users/erickt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erickt/subscriptions","organizations_url":"https://api.github.com/users/erickt/orgs","repos_url":"https://api.github.com/users/erickt/repos","events_url":"https://api.github.com/users/erickt/events{/privacy}","received_events_url":"https://api.github.com/users/erickt/received_events","type":"User","site_admin":false},"body":"Please don't broadcast this yet, the details haven't been finalized.\r\n\r\n[Rendered](https://github.com/rust-community/underhanded.rs/blob/post/_posts/2016-12-08-underhanded-rust.en.md)","created_at":"2016-12-10T01:00:47Z","updated_at":"2016-12-13T18:41:21Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3d6eedbe746a84ea8fb7e504c840db0612a7077b","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/rust-community/underhanded.rs/pulls/1/commits","review_comments_url":"https://api.github.com/repos/rust-community/underhanded.rs/pulls/1/comments","review_comment_url":"https://api.github.com/repos/rust-community/underhanded.rs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rust-community/underhanded.rs/issues/1/comments","statuses_url":"https://api.github.com/repos/rust-community/underhanded.rs/statuses/d2bd0ce804faf60ff73c38cb89a1309601a373a9","head":{"label":"rust-community:post","ref":"post","sha":"d2bd0ce804faf60ff73c38cb89a1309601a373a9","user":{"login":"rust-community","id":16257301,"avatar_url":"https://avatars.githubusercontent.com/u/16257301?v=3","gravatar_id":"","url":"https://api.github.com/users/rust-community","html_url":"https://github.com/rust-community","followers_url":"https://api.github.com/users/rust-community/followers","following_url":"https://api.github.com/users/rust-community/following{/other_user}","gists_url":"https://api.github.com/users/rust-community/gists{/gist_id}","starred_url":"https://api.github.com/users/rust-community/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rust-community/subscriptions","organizations_url":"https://api.github.com/users/rust-community/orgs","repos_url":"https://api.github.com/users/rust-community/repos","events_url":"https://api.github.com/users/rust-community/events{/privacy}","received_events_url":"https://api.github.com/users/rust-community/received_events","type":"Organization","site_admin":false},"repo":{"id":75874973,"name":"underhanded.rs","full_name":"rust-community/underhanded.rs","owner":{"login":"rust-community","id":16257301,"avatar_url":"https://avatars.githubusercontent.com/u/16257301?v=3","gravatar_id":"","url":"https://api.github.com/users/rust-community","html_url":"https://github.com/rust-community","followers_url":"https://api.github.com/users/rust-community/followers","following_url":"https://api.github.com/users/rust-community/following{/other_user}","gists_url":"https://api.github.com/users/rust-community/gists{/gist_id}","starred_url":"https://api.github.com/users/rust-community/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rust-community/subscriptions","organizations_url":"https://api.github.com/users/rust-community/orgs","repos_url":"https://api.github.com/users/rust-community/repos","events_url":"https://api.github.com/users/rust-community/events{/privacy}","received_events_url":"https://api.github.com/users/rust-community/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rust-community/underhanded.rs","description":"Website ","fork":false,"url":"https://api.github.com/repos/rust-community/underhanded.rs","forks_url":"https://api.github.com/repos/rust-community/underhanded.rs/forks","keys_url":"https://api.github.com/repos/rust-community/underhanded.rs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rust-community/underhanded.rs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rust-community/underhanded.rs/teams","hooks_url":"https://api.github.com/repos/rust-community/underhanded.rs/hooks","issue_events_url":"https://api.github.com/repos/rust-community/underhanded.rs/issues/events{/number}","events_url":"https://api.github.com/repos/rust-community/underhanded.rs/events","assignees_url":"https://api.github.com/repos/rust-community/underhanded.rs/assignees{/user}","branches_url":"https://api.github.com/repos/rust-community/underhanded.rs/branches{/branch}","tags_url":"https://api.github.com/repos/rust-community/underhanded.rs/tags","blobs_url":"https://api.github.com/repos/rust-community/underhanded.rs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rust-community/underhanded.rs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rust-community/underhanded.rs/git/refs{/sha}","trees_url":"https://api.github.com/repos/rust-community/underhanded.rs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rust-community/underhanded.rs/statuses/{sha}","languages_url":"https://api.github.com/repos/rust-community/underhanded.rs/languages","stargazers_url":"https://api.github.com/repos/rust-community/underhanded.rs/stargazers","contributors_url":"https://api.github.com/repos/rust-community/underhanded.rs/contributors","subscribers_url":"https://api.github.com/repos/rust-community/underhanded.rs/subscribers","subscription_url":"https://api.github.com/repos/rust-community/underhanded.rs/subscription","commits_url":"https://api.github.com/repos/rust-community/underhanded.rs/commits{/sha}","git_commits_url":"https://api.github.com/repos/rust-community/underhanded.rs/git/commits{/sha}","comments_url":"https://api.github.com/repos/rust-community/underhanded.rs/comments{/number}","issue_comment_url":"https://api.github.com/repos/rust-community/underhanded.rs/issues/comments{/number}","contents_url":"https://api.github.com/repos/rust-community/underhanded.rs/contents/{+path}","compare_url":"https://api.github.com/repos/rust-community/underhanded.rs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rust-community/underhanded.rs/merges","archive_url":"https://api.github.com/repos/rust-community/underhanded.rs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rust-community/underhanded.rs/downloads","issues_url":"https://api.github.com/repos/rust-community/underhanded.rs/issues{/number}","pulls_url":"https://api.github.com/repos/rust-community/underhanded.rs/pulls{/number}","milestones_url":"https://api.github.com/repos/rust-community/underhanded.rs/milestones{/number}","notifications_url":"https://api.github.com/repos/rust-community/underhanded.rs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rust-community/underhanded.rs/labels{/name}","releases_url":"https://api.github.com/repos/rust-community/underhanded.rs/releases{/id}","deployments_url":"https://api.github.com/repos/rust-community/underhanded.rs/deployments","created_at":"2016-12-07T20:56:15Z","updated_at":"2016-12-07T21:28:00Z","pushed_at":"2016-12-10T02:39:14Z","git_url":"git://github.com/rust-community/underhanded.rs.git","ssh_url":"git@github.com:rust-community/underhanded.rs.git","clone_url":"https://github.com/rust-community/underhanded.rs.git","svn_url":"https://github.com/rust-community/underhanded.rs","homepage":null,"size":31,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"rust-community:gh-pages","ref":"gh-pages","sha":"119430b5e1b9a24ca0dc15b39cbe92e49e439f6a","user":{"login":"rust-community","id":16257301,"avatar_url":"https://avatars.githubusercontent.com/u/16257301?v=3","gravatar_id":"","url":"https://api.github.com/users/rust-community","html_url":"https://github.com/rust-community","followers_url":"https://api.github.com/users/rust-community/followers","following_url":"https://api.github.com/users/rust-community/following{/other_user}","gists_url":"https://api.github.com/users/rust-community/gists{/gist_id}","starred_url":"https://api.github.com/users/rust-community/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rust-community/subscriptions","organizations_url":"https://api.github.com/users/rust-community/orgs","repos_url":"https://api.github.com/users/rust-community/repos","events_url":"https://api.github.com/users/rust-community/events{/privacy}","received_events_url":"https://api.github.com/users/rust-community/received_events","type":"Organization","site_admin":false},"repo":{"id":75874973,"name":"underhanded.rs","full_name":"rust-community/underhanded.rs","owner":{"login":"rust-community","id":16257301,"avatar_url":"https://avatars.githubusercontent.com/u/16257301?v=3","gravatar_id":"","url":"https://api.github.com/users/rust-community","html_url":"https://github.com/rust-community","followers_url":"https://api.github.com/users/rust-community/followers","following_url":"https://api.github.com/users/rust-community/following{/other_user}","gists_url":"https://api.github.com/users/rust-community/gists{/gist_id}","starred_url":"https://api.github.com/users/rust-community/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rust-community/subscriptions","organizations_url":"https://api.github.com/users/rust-community/orgs","repos_url":"https://api.github.com/users/rust-community/repos","events_url":"https://api.github.com/users/rust-community/events{/privacy}","received_events_url":"https://api.github.com/users/rust-community/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rust-community/underhanded.rs","description":"Website ","fork":false,"url":"https://api.github.com/repos/rust-community/underhanded.rs","forks_url":"https://api.github.com/repos/rust-community/underhanded.rs/forks","keys_url":"https://api.github.com/repos/rust-community/underhanded.rs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rust-community/underhanded.rs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rust-community/underhanded.rs/teams","hooks_url":"https://api.github.com/repos/rust-community/underhanded.rs/hooks","issue_events_url":"https://api.github.com/repos/rust-community/underhanded.rs/issues/events{/number}","events_url":"https://api.github.com/repos/rust-community/underhanded.rs/events","assignees_url":"https://api.github.com/repos/rust-community/underhanded.rs/assignees{/user}","branches_url":"https://api.github.com/repos/rust-community/underhanded.rs/branches{/branch}","tags_url":"https://api.github.com/repos/rust-community/underhanded.rs/tags","blobs_url":"https://api.github.com/repos/rust-community/underhanded.rs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rust-community/underhanded.rs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rust-community/underhanded.rs/git/refs{/sha}","trees_url":"https://api.github.com/repos/rust-community/underhanded.rs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rust-community/underhanded.rs/statuses/{sha}","languages_url":"https://api.github.com/repos/rust-community/underhanded.rs/languages","stargazers_url":"https://api.github.com/repos/rust-community/underhanded.rs/stargazers","contributors_url":"https://api.github.com/repos/rust-community/underhanded.rs/contributors","subscribers_url":"https://api.github.com/repos/rust-community/underhanded.rs/subscribers","subscription_url":"https://api.github.com/repos/rust-community/underhanded.rs/subscription","commits_url":"https://api.github.com/repos/rust-community/underhanded.rs/commits{/sha}","git_commits_url":"https://api.github.com/repos/rust-community/underhanded.rs/git/commits{/sha}","comments_url":"https://api.github.com/repos/rust-community/underhanded.rs/comments{/number}","issue_comment_url":"https://api.github.com/repos/rust-community/underhanded.rs/issues/comments{/number}","contents_url":"https://api.github.com/repos/rust-community/underhanded.rs/contents/{+path}","compare_url":"https://api.github.com/repos/rust-community/underhanded.rs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rust-community/underhanded.rs/merges","archive_url":"https://api.github.com/repos/rust-community/underhanded.rs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rust-community/underhanded.rs/downloads","issues_url":"https://api.github.com/repos/rust-community/underhanded.rs/issues{/number}","pulls_url":"https://api.github.com/repos/rust-community/underhanded.rs/pulls{/number}","milestones_url":"https://api.github.com/repos/rust-community/underhanded.rs/milestones{/number}","notifications_url":"https://api.github.com/repos/rust-community/underhanded.rs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rust-community/underhanded.rs/labels{/name}","releases_url":"https://api.github.com/repos/rust-community/underhanded.rs/releases{/id}","deployments_url":"https://api.github.com/repos/rust-community/underhanded.rs/deployments","created_at":"2016-12-07T20:56:15Z","updated_at":"2016-12-07T21:28:00Z","pushed_at":"2016-12-10T02:39:14Z","git_url":"git://github.com/rust-community/underhanded.rs.git","ssh_url":"git@github.com:rust-community/underhanded.rs.git","clone_url":"https://github.com/rust-community/underhanded.rs.git","svn_url":"https://github.com/rust-community/underhanded.rs","homepage":null,"size":31,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rust-community/underhanded.rs/pulls/1"},"html":{"href":"https://github.com/rust-community/underhanded.rs/pull/1"},"issue":{"href":"https://api.github.com/repos/rust-community/underhanded.rs/issues/1"},"comments":{"href":"https://api.github.com/repos/rust-community/underhanded.rs/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/rust-community/underhanded.rs/pulls/1/comments"},"review_comment":{"href":"https://api.github.com/repos/rust-community/underhanded.rs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rust-community/underhanded.rs/pulls/1/commits"},"statuses":{"href":"https://api.github.com/repos/rust-community/underhanded.rs/statuses/d2bd0ce804faf60ff73c38cb89a1309601a373a9"}}}}
{"actor":{"display_login":"erickt"}}