From 03996c45a8885e16c74d587ec86be72891f0bbb0 Mon Sep 17 00:00:00 2001 From: Kelvin Lee Date: Sat, 10 Sep 2016 10:17:41 +1000 Subject: [PATCH] Fixed to safely sscanf. --- source/AY8910.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/source/AY8910.cpp b/source/AY8910.cpp index e742e407..8fae8192 100644 --- a/source/AY8910.cpp +++ b/source/AY8910.cpp @@ -1114,13 +1114,19 @@ bool CAY8910::LoadSnapshot(YamlLoadHelper& yamlLoadHelper, std::string& suffix) if (!bFound) break; // done + int _tstates = 0; + int _ofs = 0; + unsigned int _reg = 0; + unsigned int _val = 0; if(4 != sscanf_s(value.c_str(), SS_YAML_VALUE_CHANGE_FORMAT, - &ay_change[ay_change_count].tstates, - &ay_change[ay_change_count].ofs, - &ay_change[ay_change_count].reg, - &ay_change[ay_change_count].val)) + &_tstates, &_ofs, &_reg, &_val)) throw std::string("Card: AY8910: Failed to scanf change list"); + ay_change[ay_change_count].tstates = _tstates; + ay_change[ay_change_count].ofs = _ofs; + ay_change[ay_change_count].reg = _reg; + ay_change[ay_change_count].val = _val; + ay_change_count++; if (ay_change_count > AY_CHANGE_MAX) throw std::string("Card: AY8910: Too many changes");