821f8bfd95
`func uiEvt(e termbox.Event) Event` used to change the type of termbox.Event to Event by using some pointer-cast magic[1], which could cause an overflow if `termbox.Event` changes its structure. I'd rather just have `type Event termbox.Event` but that would break backwards compatibility. Warning: A buffer overflow could cause a serious security issue but it is very unlikely that anyone could exploit that (though not impossbible). You'd need to push a upstream update to termbox, which would tweak termbox.Event's structure. Still, this issue should be fixed and unsafe should never be used. [1] it used to get the address of termbox.Event and just cast a Event pointer
29 lines
924 B
Go
29 lines
924 B
Go
// Copyright 2015 Zack Guo <gizak@icloud.com>. All rights reserved.
|
|
// Use of this source code is governed by a MIT license that can
|
|
// be found in the LICENSE file.
|
|
//
|
|
// Portions of this file uses [termbox-go](https://github.com/nsf/termbox-go/blob/54b74d087b7c397c402d0e3b66d2ccb6eaf5c2b4/api_common.go)
|
|
// by [authors](https://github.com/nsf/termbox-go/blob/master/AUTHORS)
|
|
// under [license](https://github.com/nsf/termbox-go/blob/master/LICENSE)
|
|
|
|
package termui
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
|
|
termbox "github.com/nsf/termbox-go"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
type boxEvent termbox.Event
|
|
|
|
func TestUiEvt(t *testing.T) {
|
|
err := errors.New("This is a mock error")
|
|
event := boxEvent{3, 5, 2, 'H', 200, 500, err, 50, 30, 2}
|
|
expetced := Event{3, 5, 2, 'H', 200, 500, err, 50, 30, 2}
|
|
|
|
// We need to do that ugly casting so that vet does not complain
|
|
assert.Equal(t, uiEvt(termbox.Event(event)), expetced)
|
|
}
|