From fcfe40aa09098454c61a2aee69aa416a1c685cea Mon Sep 17 00:00:00 2001 From: nnhy Date: Thu, 17 Mar 2016 06:14:58 +0000 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=8C=BA=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E4=BD=BF=E7=94=A80=E7=BB=93=E5=B0=BE=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E4=B8=B2=EF=BC=8C=E4=B9=9F=E5=B0=B1=E6=98=AF=E6=9C=80=E5=A4=A7?= =?UTF-8?q?=E6=99=BA=E8=83=BD7=E4=B8=AA=E5=AD=97=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Config.cpp | 10 +++++----- TinyNet/TinyConfig.cpp | 2 +- TokenNet/TokenConfig.cpp | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Config.cpp b/Config.cpp index 675b5d83..01ff8b3d 100644 --- a/Config.cpp +++ b/Config.cpp @@ -20,7 +20,7 @@ struct ConfigBlock { ushort Hash; ushort Size; - char Name[8]; + char Name[8]; // 零结尾字符串 ushort GetHash() const; bool Valid() const; @@ -76,11 +76,10 @@ uint ConfigBlock::CopyTo(Buffer& bs) const bool ConfigBlock::Init(const String& name, const Buffer& bs) { if(!name) return false; + if(name.Length() >= sizeof(Name)) return false; TS("ConfigBlock::Init"); - if(name.Length() > sizeof(Name)) return false; - // 配置块的大小,只有第一次能够修改,以后即使废弃也不能修改,仅仅清空名称 if(bs.Length() > 0) { @@ -165,14 +164,13 @@ const ConfigBlock* FindBlock(const Storage& st, uint addr, const String& name) TS("Config::Find"); if(!name) return nullptr; + if(name.Length() >= sizeof(ConfigBlock::Name)) return nullptr; if(!CheckSignature(st, addr, false)) return nullptr; // 第一个配置块 auto cfg = (const ConfigBlock*)addr; - if(name.Length() > sizeof(cfg->Name)) return nullptr; - // 遍历链表,找到同名块 while(cfg->Valid()) { @@ -252,6 +250,8 @@ const void* Config::Set(const String& name, const Buffer& bs) const if(!name) return nullptr; + if(name.Length() >= sizeof(ConfigBlock::Name)) return nullptr; + auto cfg = FindBlock(Device, Address, name); if(!cfg) cfg = NewBlock(Device, Address, bs.Length()); if(!cfg) return nullptr; diff --git a/TinyNet/TinyConfig.cpp b/TinyNet/TinyConfig.cpp index e26ae7d0..439ca130 100644 --- a/TinyNet/TinyConfig.cpp +++ b/TinyNet/TinyConfig.cpp @@ -5,7 +5,7 @@ TinyConfig* TinyConfig::Current = nullptr; TinyConfig::TinyConfig() : ConfigBase() { - _Name = "TinyConf"; + _Name = "TinyCfg"; _Start = &Length; _End = &TagEnd; diff --git a/TokenNet/TokenConfig.cpp b/TokenNet/TokenConfig.cpp index a2e41f1f..9461f007 100644 --- a/TokenNet/TokenConfig.cpp +++ b/TokenNet/TokenConfig.cpp @@ -11,7 +11,7 @@ TokenConfig::TokenConfig() : ConfigBase(), Server(_Server, ArrayLength(_Server)), Vendor(_Vendor, ArrayLength(_Vendor)) { - _Name = "TokenCfg"; + _Name = "TokenCf"; _Start = &Length; _End = &TagEnd; Init();