{"action":"closed","number":220,"pull_request":{"url":"https://api.github.com/repos/liblouis/liblouis/pulls/220","id":92229921,"html_url":"https://github.com/liblouis/liblouis/pull/220","diff_url":"https://github.com/liblouis/liblouis/pull/220.diff","patch_url":"https://github.com/liblouis/liblouis/pull/220.patch","issue_url":"https://api.github.com/repos/liblouis/liblouis/issues/220","number":220,"state":"closed","locked":false,"title":"Fix for stackoverflow crashes on applications with smaller stack size","user":{"login":"vsmontalvao","id":1117510,"avatar_url":"https://avatars.githubusercontent.com/u/1117510?v=3","gravatar_id":"","url":"https://api.github.com/users/vsmontalvao","html_url":"https://github.com/vsmontalvao","followers_url":"https://api.github.com/users/vsmontalvao/followers","following_url":"https://api.github.com/users/vsmontalvao/following{/other_user}","gists_url":"https://api.github.com/users/vsmontalvao/gists{/gist_id}","starred_url":"https://api.github.com/users/vsmontalvao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vsmontalvao/subscriptions","organizations_url":"https://api.github.com/users/vsmontalvao/orgs","repos_url":"https://api.github.com/users/vsmontalvao/repos","events_url":"https://api.github.com/users/vsmontalvao/events{/privacy}","received_events_url":"https://api.github.com/users/vsmontalvao/received_events","type":"User","site_admin":false},"body":"This change moves the memory allocation for the patterns variable from\r\nthe stack to the heap inside the compileRule function. The patterns\r\nvariable was a widechar array with size 27720 which usually takes 54KB\r\nof memory (or 108KB if UCS=4). When there's not available memory on the\r\nstack this could lead to stackoverflow crashes or accessing unmapped\r\nmemory. As this variable is declared in 2 places (with different scopes)\r\ninside the function, an executable could require at least 108KB (or\r\n216KB if USC=4) of stack memory per compileRule call.\r\nSimilarly to other places, it also adds a check which calls outOfMemory\r\nin case of not having sufficient available memory on the heap.\r\nThe fix is especially important if we consider that some applications\r\nmight have smaller stack size limits and requiring large ammounts of\r\nstack size (e.g. >100KB) for a single function call can cause such\r\ncrashes.","created_at":"2016-11-03T20:05:52Z","updated_at":"2016-11-08T09:08:42Z","closed_at":"2016-11-08T09:08:42Z","merged_at":"2016-11-08T09:08:42Z","merge_commit_sha":"67a439a5599bd57835a6615eca70013213f05667","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/liblouis/liblouis/pulls/220/commits","review_comments_url":"https://api.github.com/repos/liblouis/liblouis/pulls/220/comments","review_comment_url":"https://api.github.com/repos/liblouis/liblouis/pulls/comments{/number}","comments_url":"https://api.github.com/repos/liblouis/liblouis/issues/220/comments","statuses_url":"https://api.github.com/repos/liblouis/liblouis/statuses/922cd2e52a63a8c50c82081ba61dcdbe560a810f","head":{"label":"vsmontalvao:vsmontalvao-stackoverflowfix","ref":"vsmontalvao-stackoverflowfix","sha":"922cd2e52a63a8c50c82081ba61dcdbe560a810f","user":{"login":"vsmontalvao","id":1117510,"avatar_url":"https://avatars.githubusercontent.com/u/1117510?v=3","gravatar_id":"","url":"https://api.github.com/users/vsmontalvao","html_url":"https://github.com/vsmontalvao","followers_url":"https://api.github.com/users/vsmontalvao/followers","following_url":"https://api.github.com/users/vsmontalvao/following{/other_user}","gists_url":"https://api.github.com/users/vsmontalvao/gists{/gist_id}","starred_url":"https://api.github.com/users/vsmontalvao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vsmontalvao/subscriptions","organizations_url":"https://api.github.com/users/vsmontalvao/orgs","repos_url":"https://api.github.com/users/vsmontalvao/repos","events_url":"https://api.github.com/users/vsmontalvao/events{/privacy}","received_events_url":"https://api.github.com/users/vsmontalvao/received_events","type":"User","site_admin":false},"repo":{"id":69899432,"name":"liblouis","full_name":"vsmontalvao/liblouis","owner":{"login":"vsmontalvao","id":1117510,"avatar_url":"https://avatars.githubusercontent.com/u/1117510?v=3","gravatar_id":"","url":"https://api.github.com/users/vsmontalvao","html_url":"https://github.com/vsmontalvao","followers_url":"https://api.github.com/users/vsmontalvao/followers","following_url":"https://api.github.com/users/vsmontalvao/following{/other_user}","gists_url":"https://api.github.com/users/vsmontalvao/gists{/gist_id}","starred_url":"https://api.github.com/users/vsmontalvao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vsmontalvao/subscriptions","organizations_url":"https://api.github.com/users/vsmontalvao/orgs","repos_url":"https://api.github.com/users/vsmontalvao/repos","events_url":"https://api.github.com/users/vsmontalvao/events{/privacy}","received_events_url":"https://api.github.com/users/vsmontalvao/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/vsmontalvao/liblouis","description":"Open-source braille translator and back-translator.","fork":true,"url":"https://api.github.com/repos/vsmontalvao/liblouis","forks_url":"https://api.github.com/repos/vsmontalvao/liblouis/forks","keys_url":"https://api.github.com/repos/vsmontalvao/liblouis/keys{/key_id}","collaborators_url":"https://api.github.com/repos/vsmontalvao/liblouis/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/vsmontalvao/liblouis/teams","hooks_url":"https://api.github.com/repos/vsmontalvao/liblouis/hooks","issue_events_url":"https://api.github.com/repos/vsmontalvao/liblouis/issues/events{/number}","events_url":"https://api.github.com/repos/vsmontalvao/liblouis/events","assignees_url":"https://api.github.com/repos/vsmontalvao/liblouis/assignees{/user}","branches_url":"https://api.github.com/repos/vsmontalvao/liblouis/branches{/branch}","tags_url":"https://api.github.com/repos/vsmontalvao/liblouis/tags","blobs_url":"https://api.github.com/repos/vsmontalvao/liblouis/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/vsmontalvao/liblouis/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/vsmontalvao/liblouis/git/refs{/sha}","trees_url":"https://api.github.com/repos/vsmontalvao/liblouis/git/trees{/sha}","statuses_url":"https://api.github.com/repos/vsmontalvao/liblouis/statuses/{sha}","languages_url":"https://api.github.com/repos/vsmontalvao/liblouis/languages","stargazers_url":"https://api.github.com/repos/vsmontalvao/liblouis/stargazers","contributors_url":"https://api.github.com/repos/vsmontalvao/liblouis/contributors","subscribers_url":"https://api.github.com/repos/vsmontalvao/liblouis/subscribers","subscription_url":"https://api.github.com/repos/vsmontalvao/liblouis/subscription","commits_url":"https://api.github.com/repos/vsmontalvao/liblouis/commits{/sha}","git_commits_url":"https://api.github.com/repos/vsmontalvao/liblouis/git/commits{/sha}","comments_url":"https://api.github.com/repos/vsmontalvao/liblouis/comments{/number}","issue_comment_url":"https://api.github.com/repos/vsmontalvao/liblouis/issues/comments{/number}","contents_url":"https://api.github.com/repos/vsmontalvao/liblouis/contents/{+path}","compare_url":"https://api.github.com/repos/vsmontalvao/liblouis/compare/{base}...{head}","merges_url":"https://api.github.com/repos/vsmontalvao/liblouis/merges","archive_url":"https://api.github.com/repos/vsmontalvao/liblouis/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/vsmontalvao/liblouis/downloads","issues_url":"https://api.github.com/repos/vsmontalvao/liblouis/issues{/number}","pulls_url":"https://api.github.com/repos/vsmontalvao/liblouis/pulls{/number}","milestones_url":"https://api.github.com/repos/vsmontalvao/liblouis/milestones{/number}","notifications_url":"https://api.github.com/repos/vsmontalvao/liblouis/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/vsmontalvao/liblouis/labels{/name}","releases_url":"https://api.github.com/repos/vsmontalvao/liblouis/releases{/id}","deployments_url":"https://api.github.com/repos/vsmontalvao/liblouis/deployments","created_at":"2016-10-03T18:38:20Z","updated_at":"2016-10-03T18:38:27Z","pushed_at":"2016-11-03T20:04:52Z","git_url":"git://github.com/vsmontalvao/liblouis.git","ssh_url":"git@github.com:vsmontalvao/liblouis.git","clone_url":"https://github.com/vsmontalvao/liblouis.git","svn_url":"https://github.com/vsmontalvao/liblouis","homepage":"liblouis.org","size":51567,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"liblouis:master","ref":"master","sha":"0d0c8b9ebe34f644d7df9e5fcbdf7902155151af","user":{"login":"liblouis","id":5627342,"avatar_url":"https://avatars.githubusercontent.com/u/5627342?v=3","gravatar_id":"","url":"https://api.github.com/users/liblouis","html_url":"https://github.com/liblouis","followers_url":"https://api.github.com/users/liblouis/followers","following_url":"https://api.github.com/users/liblouis/following{/other_user}","gists_url":"https://api.github.com/users/liblouis/gists{/gist_id}","starred_url":"https://api.github.com/users/liblouis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/liblouis/subscriptions","organizations_url":"https://api.github.com/users/liblouis/orgs","repos_url":"https://api.github.com/users/liblouis/repos","events_url":"https://api.github.com/users/liblouis/events{/privacy}","received_events_url":"https://api.github.com/users/liblouis/received_events","type":"Organization","site_admin":false},"repo":{"id":5136939,"name":"liblouis","full_name":"liblouis/liblouis","owner":{"login":"liblouis","id":5627342,"avatar_url":"https://avatars.githubusercontent.com/u/5627342?v=3","gravatar_id":"","url":"https://api.github.com/users/liblouis","html_url":"https://github.com/liblouis","followers_url":"https://api.github.com/users/liblouis/followers","following_url":"https://api.github.com/users/liblouis/following{/other_user}","gists_url":"https://api.github.com/users/liblouis/gists{/gist_id}","starred_url":"https://api.github.com/users/liblouis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/liblouis/subscriptions","organizations_url":"https://api.github.com/users/liblouis/orgs","repos_url":"https://api.github.com/users/liblouis/repos","events_url":"https://api.github.com/users/liblouis/events{/privacy}","received_events_url":"https://api.github.com/users/liblouis/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/liblouis/liblouis","description":"Open-source braille translator and back-translator.","fork":false,"url":"https://api.github.com/repos/liblouis/liblouis","forks_url":"https://api.github.com/repos/liblouis/liblouis/forks","keys_url":"https://api.github.com/repos/liblouis/liblouis/keys{/key_id}","collaborators_url":"https://api.github.com/repos/liblouis/liblouis/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/liblouis/liblouis/teams","hooks_url":"https://api.github.com/repos/liblouis/liblouis/hooks","issue_events_url":"https://api.github.com/repos/liblouis/liblouis/issues/events{/number}","events_url":"https://api.github.com/repos/liblouis/liblouis/events","assignees_url":"https://api.github.com/repos/liblouis/liblouis/assignees{/user}","branches_url":"https://api.github.com/repos/liblouis/liblouis/branches{/branch}","tags_url":"https://api.github.com/repos/liblouis/liblouis/tags","blobs_url":"https://api.github.com/repos/liblouis/liblouis/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/liblouis/liblouis/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/liblouis/liblouis/git/refs{/sha}","trees_url":"https://api.github.com/repos/liblouis/liblouis/git/trees{/sha}","statuses_url":"https://api.github.com/repos/liblouis/liblouis/statuses/{sha}","languages_url":"https://api.github.com/repos/liblouis/liblouis/languages","stargazers_url":"https://api.github.com/repos/liblouis/liblouis/stargazers","contributors_url":"https://api.github.com/repos/liblouis/liblouis/contributors","subscribers_url":"https://api.github.com/repos/liblouis/liblouis/subscribers","subscription_url":"https://api.github.com/repos/liblouis/liblouis/subscription","commits_url":"https://api.github.com/repos/liblouis/liblouis/commits{/sha}","git_commits_url":"https://api.github.com/repos/liblouis/liblouis/git/commits{/sha}","comments_url":"https://api.github.com/repos/liblouis/liblouis/comments{/number}","issue_comment_url":"https://api.github.com/repos/liblouis/liblouis/issues/comments{/number}","contents_url":"https://api.github.com/repos/liblouis/liblouis/contents/{+path}","compare_url":"https://api.github.com/repos/liblouis/liblouis/compare/{base}...{head}","merges_url":"https://api.github.com/repos/liblouis/liblouis/merges","archive_url":"https://api.github.com/repos/liblouis/liblouis/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/liblouis/liblouis/downloads","issues_url":"https://api.github.com/repos/liblouis/liblouis/issues{/number}","pulls_url":"https://api.github.com/repos/liblouis/liblouis/pulls{/number}","milestones_url":"https://api.github.com/repos/liblouis/liblouis/milestones{/number}","notifications_url":"https://api.github.com/repos/liblouis/liblouis/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/liblouis/liblouis/labels{/name}","releases_url":"https://api.github.com/repos/liblouis/liblouis/releases{/id}","deployments_url":"https://api.github.com/repos/liblouis/liblouis/deployments","created_at":"2012-07-21T21:16:38Z","updated_at":"2016-10-26T14:43:42Z","pushed_at":"2016-11-08T09:08:42Z","git_url":"git://github.com/liblouis/liblouis.git","ssh_url":"git@github.com:liblouis/liblouis.git","clone_url":"https://github.com/liblouis/liblouis.git","svn_url":"https://github.com/liblouis/liblouis","homepage":"liblouis.org","size":139911,"stargazers_count":32,"watchers_count":32,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":48,"mirror_url":null,"open_issues_count":57,"forks":48,"open_issues":57,"watchers":32,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/liblouis/liblouis/pulls/220"},"html":{"href":"https://github.com/liblouis/liblouis/pull/220"},"issue":{"href":"https://api.github.com/repos/liblouis/liblouis/issues/220"},"comments":{"href":"https://api.github.com/repos/liblouis/liblouis/issues/220/comments"},"review_comments":{"href":"https://api.github.com/repos/liblouis/liblouis/pulls/220/comments"},"review_comment":{"href":"https://api.github.com/repos/liblouis/liblouis/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/liblouis/liblouis/pulls/220/commits"},"statuses":{"href":"https://api.github.com/repos/liblouis/liblouis/statuses/922cd2e52a63a8c50c82081ba61dcdbe560a810f"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"egli","id":119274,"avatar_url":"https://avatars.githubusercontent.com/u/119274?v=3","gravatar_id":"","url":"https://api.github.com/users/egli","html_url":"https://github.com/egli","followers_url":"https://api.github.com/users/egli/followers","following_url":"https://api.github.com/users/egli/following{/other_user}","gists_url":"https://api.github.com/users/egli/gists{/gist_id}","starred_url":"https://api.github.com/users/egli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/egli/subscriptions","organizations_url":"https://api.github.com/users/egli/orgs","repos_url":"https://api.github.com/users/egli/repos","events_url":"https://api.github.com/users/egli/events{/privacy}","received_events_url":"https://api.github.com/users/egli/received_events","type":"User","site_admin":false},"comments":0,"review_comments":5,"commits":1,"additions":17,"deletions":4,"changed_files":1}}
{"actor":{"display_login":"egli"}}