From: Ruben Kerkhof Date: Mon, 17 Dec 2018 11:55:57 +0000 (+0100) Subject: Fix a few off-by-one errors X-Git-Tag: rec-4.2.0-alpha1~71^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9b2244e18604701075d4952d17d4f68e4b54c60e;p=pdns Fix a few off-by-one errors --- diff --git a/modules/opendbxbackend/odbxbackend.cc b/modules/opendbxbackend/odbxbackend.cc index 591ac7cbf..2ffd7cebe 100644 --- a/modules/opendbxbackend/odbxbackend.cc +++ b/modules/opendbxbackend/odbxbackend.cc @@ -259,7 +259,7 @@ bool OdbxBackend::list( const DNSName& target, int zoneid, bool include_disabled m_qname.clear(); m_result = NULL; - int len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid ); + int len = snprintf( m_buffer, sizeof( m_buffer ), "%d", zoneid ); if( len < 0 ) { @@ -321,7 +321,7 @@ void OdbxBackend::lookup( const QType& qtype, const DNSName& qname, DNSPacket* d stmtref = strbind( ":type", qtype.getName(), stmt ); } - int len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid ); + int len = snprintf( m_buffer, sizeof( m_buffer ), "%d", zoneid ); if( len < 0 ) { @@ -433,7 +433,7 @@ void OdbxBackend::setFresh( uint32_t domain_id ) throw( DBException( "Error: Server unreachable" ) ); } - len = snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( "sql-update-lastcheck" ).c_str(), time( 0 ), domain_id ); + len = snprintf( m_buffer, sizeof( m_buffer ), getArg( "sql-update-lastcheck" ).c_str(), time( 0 ), domain_id ); if( len < 0 ) { @@ -473,7 +473,7 @@ void OdbxBackend::setNotified( uint32_t domain_id, uint32_t serial ) throw( DBException( "Error: Server unreachable" ) ); } - int len = snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( "sql-update-serial" ).c_str(), serial, domain_id ); + int len = snprintf( m_buffer, sizeof( m_buffer ), getArg( "sql-update-serial" ).c_str(), serial, domain_id ); if( len < 0 ) { @@ -601,7 +601,7 @@ bool OdbxBackend::createSlaveDomain( const string& ip, const DNSName& domain, co return false; } - int len = snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( "sql-insert-slave" ).c_str(), escape( domain.makeLowerCase().toStringRootDot(), WRITE ).c_str(), + int len = snprintf( m_buffer, sizeof( m_buffer ), getArg( "sql-insert-slave" ).c_str(), escape( domain.makeLowerCase().toStringRootDot(), WRITE ).c_str(), escape( ip, WRITE ).c_str(), escape( account, WRITE ).c_str() ); if( len < 0 ) @@ -652,7 +652,7 @@ bool OdbxBackend::feedRecord( const DNSResourceRecord& rr, const DNSName& ordern trim_left(content); } - int len = snprintf( m_buffer, sizeof( m_buffer ) - 1, getArg( "sql-insert-record" ).c_str(), rr.domain_id, + int len = snprintf( m_buffer, sizeof( m_buffer ), getArg( "sql-insert-record" ).c_str(), rr.domain_id, escape( rr.qname.makeLowerCase().toStringRootDot(), WRITE ).c_str(), rr.qtype.getName().c_str(), rr.ttl, priority, escape( content, WRITE ).c_str() ); @@ -695,7 +695,7 @@ bool OdbxBackend::startTransaction( const DNSName& domain, int zoneid ) string stmtref = getArg( "sql-transactbegin" ); if( !execStmt( stmtref.c_str(), stmtref.size(), WRITE ) ) { return false; } - int len = snprintf( m_buffer, sizeof( m_buffer ) - 1, "%d", zoneid ); + int len = snprintf( m_buffer, sizeof( m_buffer ), "%d", zoneid ); if( len < 0 ) { diff --git a/pdns/dnsparser.cc b/pdns/dnsparser.cc index 1878fc6b9..233258a3e 100644 --- a/pdns/dnsparser.cc +++ b/pdns/dnsparser.cc @@ -63,7 +63,7 @@ public: str<<"\\# "<<(unsigned int)d_record.size()<<" "; char hex[4]; for(size_t n=0; n> 24)&0xff, (val >> 16)&0xff, (val >> 8)&0xff, diff --git a/pdns/rcpgenerator.cc b/pdns/rcpgenerator.cc index 371158582..a2d82c853 100644 --- a/pdns/rcpgenerator.cc +++ b/pdns/rcpgenerator.cc @@ -546,7 +546,7 @@ void RecordTextWriter::xfrTime(const uint32_t& val) gmtime_r(&time, &tm); char tmp[16]; - snprintf(tmp,sizeof(tmp)-1, "%04d%02d%02d" "%02d%02d%02d", + snprintf(tmp, sizeof(tmp), "%04d%02d%02d" "%02d%02d%02d", tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec); @@ -605,7 +605,7 @@ void RecordTextWriter::xfrHexBlob(const string& val, bool) string::size_type limit=val.size(); char tmp[5]; for(string::size_type n = 0; n < limit; ++n) { - snprintf(tmp, sizeof(tmp)-1, "%02x", (unsigned char)val[n]); + snprintf(tmp, sizeof(tmp), "%02x", (unsigned char)val[n]); d_string+=tmp; } } diff --git a/pdns/sillyrecords.cc b/pdns/sillyrecords.cc index d4030ef26..933a16ee0 100644 --- a/pdns/sillyrecords.cc +++ b/pdns/sillyrecords.cc @@ -320,7 +320,7 @@ string LOCRecordContent::getZoneRepresentation(bool noDot) const double remlat=60.0*(latitude-(int)latitude); double remlong=60.0*(longitude-(int)longitude); char ret[80]; - snprintf(ret,sizeof(ret)-1,"%d %d %2.03f %c %d %d %2.03f %c %.2fm %.2fm %.2fm %.2fm", + snprintf(ret, sizeof(ret), "%d %d %2.03f %c %d %d %2.03f %c %.2fm %.2fm %.2fm %.2fm", abs((int)latitude), abs((int) ((latitude-(int)latitude)*60)), fabs((double)((remlat-(int)remlat)*60.0)), latitude>0 ? 'N' : 'S', diff --git a/pdns/zoneparser-tng.cc b/pdns/zoneparser-tng.cc index 7a850ffc8..c83d5f381 100644 --- a/pdns/zoneparser-tng.cc +++ b/pdns/zoneparser-tng.cc @@ -196,10 +196,10 @@ bool ZoneParserTNG::getTemplateLine() sscanf(spec.c_str(), "%d,%d,%c", &offset, &width, &radix); // parse format specifier char sformat[12]; - snprintf(sformat, sizeof(sformat) - 1, "%%0%d%c", width, radix); // make into printf-style format + snprintf(sformat, sizeof(sformat), "%%0%d%c", width, radix); // make into printf-style format char tmp[80]; - snprintf(tmp, sizeof(tmp)-1, sformat, d_templatecounter + offset); // and do the actual printing + snprintf(tmp, sizeof(tmp), sformat, d_templatecounter + offset); // and do the actual printing outpart+=tmp; } else