{"action":"closed","issue":{"url":"https://api.github.com/repos/OpenSmalltalk/opensmalltalk-vm/issues/336","repository_url":"https://api.github.com/repos/OpenSmalltalk/opensmalltalk-vm","labels_url":"https://api.github.com/repos/OpenSmalltalk/opensmalltalk-vm/issues/336/labels{/name}","comments_url":"https://api.github.com/repos/OpenSmalltalk/opensmalltalk-vm/issues/336/comments","events_url":"https://api.github.com/repos/OpenSmalltalk/opensmalltalk-vm/issues/336/events","html_url":"https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/336","id":395114534,"node_id":"MDU6SXNzdWUzOTUxMTQ1MzQ=","number":336,"title":"Potential buffer overrun in sqwin32midi.c (IntelliSense C6386)","user":{"login":"nicolas-cellier-aka-nice","id":728098,"node_id":"MDQ6VXNlcjcyODA5OA==","avatar_url":"https://avatars0.githubusercontent.com/u/728098?v=4","gravatar_id":"","url":"https://api.github.com/users/nicolas-cellier-aka-nice","html_url":"https://github.com/nicolas-cellier-aka-nice","followers_url":"https://api.github.com/users/nicolas-cellier-aka-nice/followers","following_url":"https://api.github.com/users/nicolas-cellier-aka-nice/following{/other_user}","gists_url":"https://api.github.com/users/nicolas-cellier-aka-nice/gists{/gist_id}","starred_url":"https://api.github.com/users/nicolas-cellier-aka-nice/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nicolas-cellier-aka-nice/subscriptions","organizations_url":"https://api.github.com/users/nicolas-cellier-aka-nice/orgs","repos_url":"https://api.github.com/users/nicolas-cellier-aka-nice/repos","events_url":"https://api.github.com/users/nicolas-cellier-aka-nice/events{/privacy}","received_events_url":"https://api.github.com/users/nicolas-cellier-aka-nice/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2019-01-01T21:47:27Z","updated_at":"2019-01-04T09:44:58Z","closed_at":"2019-01-04T09:44:58Z","author_association":"CONTRIBUTOR","body":"On line 366 and following:\r\n\r\n        case ControlCmd: /* Read a control command */\r\n          channel = (dwParam1 >> 8) & 0xFF;\r\n          value =  (dwParam1 >> 16) & 0xFF;\r\n          port->cache.sqControllers[channel] = value;\r\n\r\nchannel may reach a value of 255 (0xFF).\r\nbut the cache is dimensionned 128 near line 142:\r\n\r\n    /***************************************************************\r\n     * Controller value caches -- This is the minimum complement\r\n     * A \"larger\" driver would cache 128*16 controllers and 128*16 key pressures\r\n     */\r\n    typedef struct sqControllerCache {\r\n      unsigned char sqControllers[128];  /* Controller value table */\r\n      unsigned char sqKeyPressures[128]; /* Polyphonic key pressure table */\r\n      unsigned char sqChanPressures[16]; /* Channel pressure value table */\r\n      int sqPitchBend[16];               /* The value of the pitch wheel */\r\n    } sqControllerCache;\r\n\r\nMaybe use & 0x7F to be sure?"}}
{"actor":{"display_login":"nicolas-cellier-aka-nice"}}