mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
Rename BroString to zeek::String
This commit is contained in:
parent
a2bc42dd93
commit
736a3f53d4
58 changed files with 346 additions and 339 deletions
|
@ -228,7 +228,7 @@ void Base64Converter::IllegalEncoding(const char* msg)
|
||||||
reporter->Error("%s", msg);
|
reporter->Error("%s", msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::BroString* decode_base64(const zeek::BroString* s, const zeek::BroString* a, Connection* conn)
|
zeek::String* decode_base64(const zeek::String* s, const zeek::String* a, Connection* conn)
|
||||||
{
|
{
|
||||||
if ( a && a->Len() != 0 && a->Len() != 64 )
|
if ( a && a->Len() != 0 && a->Len() != 64 )
|
||||||
{
|
{
|
||||||
|
@ -255,14 +255,14 @@ zeek::BroString* decode_base64(const zeek::BroString* s, const zeek::BroString*
|
||||||
rlen += rlen2;
|
rlen += rlen2;
|
||||||
|
|
||||||
rbuf[rlen] = '\0';
|
rbuf[rlen] = '\0';
|
||||||
return new zeek::BroString(true, (u_char*) rbuf, rlen);
|
return new zeek::String(true, (u_char*) rbuf, rlen);
|
||||||
|
|
||||||
err:
|
err:
|
||||||
delete [] rbuf;
|
delete [] rbuf;
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::BroString* encode_base64(const zeek::BroString* s, const zeek::BroString* a, Connection* conn)
|
zeek::String* encode_base64(const zeek::String* s, const zeek::String* a, Connection* conn)
|
||||||
{
|
{
|
||||||
if ( a && a->Len() != 0 && a->Len() != 64 )
|
if ( a && a->Len() != 0 && a->Len() != 64 )
|
||||||
{
|
{
|
||||||
|
@ -276,5 +276,5 @@ zeek::BroString* encode_base64(const zeek::BroString* s, const zeek::BroString*
|
||||||
Base64Converter enc(conn, a ? a->CheckString() : "");
|
Base64Converter enc(conn, a ? a->CheckString() : "");
|
||||||
enc.Encode(s->Len(), (const unsigned char*) s->Bytes(), &outlen, &outbuf);
|
enc.Encode(s->Len(), (const unsigned char*) s->Bytes(), &outlen, &outbuf);
|
||||||
|
|
||||||
return new zeek::BroString(true, (u_char*)outbuf, outlen);
|
return new zeek::String(true, (u_char*)outbuf, outlen);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,9 @@
|
||||||
#include "zeek-config.h"
|
#include "zeek-config.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
ZEEK_FORWARD_DECLARE_NAMESPACED(BroString, zeek);
|
namespace zeek { class String; }
|
||||||
|
using BroString [[deprecated("Remove in v4.1. Use zeek::String instead.")]] = zeek::String;
|
||||||
|
|
||||||
class Connection;
|
class Connection;
|
||||||
|
|
||||||
// Maybe we should have a base class for generic decoders?
|
// Maybe we should have a base class for generic decoders?
|
||||||
|
@ -58,5 +60,5 @@ protected:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
zeek::BroString* decode_base64(const zeek::BroString* s, const zeek::BroString* a = nullptr, Connection* conn = nullptr);
|
zeek::String* decode_base64(const zeek::String* s, const zeek::String* a = nullptr, Connection* conn = nullptr);
|
||||||
zeek::BroString* encode_base64(const zeek::BroString* s, const zeek::BroString* a = nullptr, Connection* conn = nullptr);
|
zeek::String* encode_base64(const zeek::String* s, const zeek::String* a = nullptr, Connection* conn = nullptr);
|
||||||
|
|
|
@ -20,15 +20,15 @@
|
||||||
|
|
||||||
namespace zeek {
|
namespace zeek {
|
||||||
|
|
||||||
constexpr int BroString::EXPANDED_STRING;
|
constexpr int String::EXPANDED_STRING;
|
||||||
constexpr int BroString::BRO_STRING_LITERAL;
|
constexpr int String::BRO_STRING_LITERAL;
|
||||||
|
|
||||||
// This constructor forces the user to specify arg_final_NUL. When str
|
// This constructor forces the user to specify arg_final_NUL. When str
|
||||||
// is a *normal* NUL-terminated string, make arg_n == strlen(str) and
|
// is a *normal* NUL-terminated string, make arg_n == strlen(str) and
|
||||||
// arg_final_NUL == 1; when str is a sequence of n bytes, make
|
// arg_final_NUL == 1; when str is a sequence of n bytes, make
|
||||||
// arg_final_NUL == 0.
|
// arg_final_NUL == 0.
|
||||||
|
|
||||||
BroString::BroString(bool arg_final_NUL, byte_vec str, int arg_n)
|
String::String(bool arg_final_NUL, byte_vec str, int arg_n)
|
||||||
{
|
{
|
||||||
b = str;
|
b = str;
|
||||||
n = arg_n;
|
n = arg_n;
|
||||||
|
@ -36,27 +36,27 @@ BroString::BroString(bool arg_final_NUL, byte_vec str, int arg_n)
|
||||||
use_free_to_delete = false;
|
use_free_to_delete = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
BroString::BroString(const u_char* str, int arg_n, bool add_NUL) : BroString()
|
String::String(const u_char* str, int arg_n, bool add_NUL) : String()
|
||||||
{
|
{
|
||||||
Set(str, arg_n, add_NUL);
|
Set(str, arg_n, add_NUL);
|
||||||
}
|
}
|
||||||
|
|
||||||
BroString::BroString(const char* str) : BroString()
|
String::String(const char* str) : String()
|
||||||
{
|
{
|
||||||
Set(str);
|
Set(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
BroString::BroString(const std::string &str) : BroString()
|
String::String(const std::string &str) : String()
|
||||||
{
|
{
|
||||||
Set(str);
|
Set(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
BroString::BroString(const BroString& bs) : BroString()
|
String::String(const String& bs) : String()
|
||||||
{
|
{
|
||||||
*this = bs;
|
*this = bs;
|
||||||
}
|
}
|
||||||
|
|
||||||
BroString::BroString()
|
String::String()
|
||||||
{
|
{
|
||||||
b = nullptr;
|
b = nullptr;
|
||||||
n = 0;
|
n = 0;
|
||||||
|
@ -64,7 +64,7 @@ BroString::BroString()
|
||||||
use_free_to_delete = false;
|
use_free_to_delete = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BroString::Reset()
|
void String::Reset()
|
||||||
{
|
{
|
||||||
if ( use_free_to_delete )
|
if ( use_free_to_delete )
|
||||||
free(b);
|
free(b);
|
||||||
|
@ -77,7 +77,7 @@ void BroString::Reset()
|
||||||
use_free_to_delete = false;
|
use_free_to_delete = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const BroString& BroString::operator=(const BroString &bs)
|
const String& String::operator=(const String &bs)
|
||||||
{
|
{
|
||||||
Reset();
|
Reset();
|
||||||
n = bs.n;
|
n = bs.n;
|
||||||
|
@ -91,17 +91,17 @@ const BroString& BroString::operator=(const BroString &bs)
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BroString::operator==(const BroString &bs) const
|
bool String::operator==(const String &bs) const
|
||||||
{
|
{
|
||||||
return Bstr_eq(this, &bs);
|
return Bstr_eq(this, &bs);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BroString::operator<(const BroString &bs) const
|
bool String::operator<(const String &bs) const
|
||||||
{
|
{
|
||||||
return Bstr_cmp(this, &bs) < 0;
|
return Bstr_cmp(this, &bs) < 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BroString::Adopt(byte_vec bytes, int len)
|
void String::Adopt(byte_vec bytes, int len)
|
||||||
{
|
{
|
||||||
Reset();
|
Reset();
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ void BroString::Adopt(byte_vec bytes, int len)
|
||||||
n = len - final_NUL;
|
n = len - final_NUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BroString::Set(const u_char* str, int len, bool add_NUL)
|
void String::Set(const u_char* str, int len, bool add_NUL)
|
||||||
{
|
{
|
||||||
Reset();
|
Reset();
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ void BroString::Set(const u_char* str, int len, bool add_NUL)
|
||||||
use_free_to_delete = false;
|
use_free_to_delete = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BroString::Set(const char* str)
|
void String::Set(const char* str)
|
||||||
{
|
{
|
||||||
Reset();
|
Reset();
|
||||||
|
|
||||||
|
@ -139,7 +139,7 @@ void BroString::Set(const char* str)
|
||||||
use_free_to_delete = false;
|
use_free_to_delete = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BroString::Set(const std::string& str)
|
void String::Set(const std::string& str)
|
||||||
{
|
{
|
||||||
Reset();
|
Reset();
|
||||||
|
|
||||||
|
@ -150,12 +150,12 @@ void BroString::Set(const std::string& str)
|
||||||
use_free_to_delete = false;
|
use_free_to_delete = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BroString::Set(const BroString& str)
|
void String::Set(const String& str)
|
||||||
{
|
{
|
||||||
*this = str;
|
*this = str;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* BroString::CheckString() const
|
const char* String::CheckString() const
|
||||||
{
|
{
|
||||||
void *nulTerm;
|
void *nulTerm;
|
||||||
if ( n == 0 )
|
if ( n == 0 )
|
||||||
|
@ -178,7 +178,7 @@ const char* BroString::CheckString() const
|
||||||
return (const char*) b;
|
return (const char*) b;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* BroString::Render(int format, int* len) const
|
char* String::Render(int format, int* len) const
|
||||||
{
|
{
|
||||||
// Maxmimum character expansion is as \xHH, so a factor of 4.
|
// Maxmimum character expansion is as \xHH, so a factor of 4.
|
||||||
char* s = new char[n*4 + 1]; // +1 is for final '\0'
|
char* s = new char[n*4 + 1]; // +1 is for final '\0'
|
||||||
|
@ -236,7 +236,7 @@ char* BroString::Render(int format, int* len) const
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostream& BroString::Render(std::ostream &os, int format) const
|
std::ostream& String::Render(std::ostream &os, int format) const
|
||||||
{
|
{
|
||||||
char* tmp = Render(format);
|
char* tmp = Render(format);
|
||||||
os << tmp;
|
os << tmp;
|
||||||
|
@ -244,9 +244,9 @@ std::ostream& BroString::Render(std::ostream &os, int format) const
|
||||||
return os;
|
return os;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::istream& BroString::Read(std::istream &is, int format)
|
std::istream& String::Read(std::istream &is, int format)
|
||||||
{
|
{
|
||||||
if ( (format & BroString::ESC_SER) )
|
if ( (format & String::ESC_SER) )
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
is >> len; // Get the length of the string
|
is >> len; // Get the length of the string
|
||||||
|
@ -270,19 +270,19 @@ std::istream& BroString::Read(std::istream &is, int format)
|
||||||
return is;
|
return is;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BroString::ToUpper()
|
void String::ToUpper()
|
||||||
{
|
{
|
||||||
for ( int i = 0; i < n; ++i )
|
for ( int i = 0; i < n; ++i )
|
||||||
if ( islower(b[i]) )
|
if ( islower(b[i]) )
|
||||||
b[i] = toupper(b[i]);
|
b[i] = toupper(b[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int BroString::MemoryAllocation() const
|
unsigned int String::MemoryAllocation() const
|
||||||
{
|
{
|
||||||
return padded_sizeof(*this) + pad_size(n + final_NUL);
|
return padded_sizeof(*this) + pad_size(n + final_NUL);
|
||||||
}
|
}
|
||||||
|
|
||||||
BroString* BroString::GetSubstring(int start, int len) const
|
String* String::GetSubstring(int start, int len) const
|
||||||
{
|
{
|
||||||
// This code used to live in zeek.bif's sub_bytes() routine.
|
// This code used to live in zeek.bif's sub_bytes() routine.
|
||||||
if ( start < 0 || start > n )
|
if ( start < 0 || start > n )
|
||||||
|
@ -291,15 +291,15 @@ BroString* BroString::GetSubstring(int start, int len) const
|
||||||
if ( len < 0 || len > n - start )
|
if ( len < 0 || len > n - start )
|
||||||
len = n - start;
|
len = n - start;
|
||||||
|
|
||||||
return new BroString(&b[start], len, true);
|
return new String(&b[start], len, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
int BroString::FindSubstring(const BroString* s) const
|
int String::FindSubstring(const String* s) const
|
||||||
{
|
{
|
||||||
return strstr_n(n, b, s->Len(), s->Bytes());
|
return strstr_n(n, b, s->Len(), s->Bytes());
|
||||||
}
|
}
|
||||||
|
|
||||||
BroString::Vec* BroString::Split(const BroString::IdxVec& indices) const
|
String::Vec* String::Split(const String::IdxVec& indices) const
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
|
@ -340,13 +340,13 @@ BroString::Vec* BroString::Split(const BroString::IdxVec& indices) const
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::VectorVal* BroString:: VecToPolicy(Vec* vec)
|
zeek::VectorVal* String:: VecToPolicy(Vec* vec)
|
||||||
{
|
{
|
||||||
auto result = zeek::make_intrusive<zeek::VectorVal>(zeek::id::string_vec);
|
auto result = zeek::make_intrusive<zeek::VectorVal>(zeek::id::string_vec);
|
||||||
|
|
||||||
for ( unsigned int i = 0; i < vec->size(); ++i )
|
for ( unsigned int i = 0; i < vec->size(); ++i )
|
||||||
{
|
{
|
||||||
BroString* string = (*vec)[i];
|
String* string = (*vec)[i];
|
||||||
auto val = zeek::make_intrusive<zeek::StringVal>(string->Len(),
|
auto val = zeek::make_intrusive<zeek::StringVal>(string->Len(),
|
||||||
(const char*) string->Bytes());
|
(const char*) string->Bytes());
|
||||||
result->Assign(i+1, std::move(val));
|
result->Assign(i+1, std::move(val));
|
||||||
|
@ -355,7 +355,7 @@ zeek::VectorVal* BroString:: VecToPolicy(Vec* vec)
|
||||||
return result.release();
|
return result.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
BroString::Vec* BroString::VecFromPolicy(zeek::VectorVal* vec)
|
String::Vec* String::VecFromPolicy(zeek::VectorVal* vec)
|
||||||
{
|
{
|
||||||
Vec* result = new Vec();
|
Vec* result = new Vec();
|
||||||
|
|
||||||
|
@ -366,18 +366,18 @@ BroString::Vec* BroString::VecFromPolicy(zeek::VectorVal* vec)
|
||||||
if ( ! v )
|
if ( ! v )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
BroString* string = new BroString(*(v->AsString()));
|
String* string = new String(*(v->AsString()));
|
||||||
result->push_back(string);
|
result->push_back(string);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* BroString::VecToString(const Vec* vec)
|
char* String::VecToString(const Vec* vec)
|
||||||
{
|
{
|
||||||
std::string result("[");
|
std::string result("[");
|
||||||
|
|
||||||
for ( BroString::VecCIt it = vec->begin(); it != vec->end(); ++it )
|
for ( String::VecCIt it = vec->begin(); it != vec->end(); ++it )
|
||||||
{
|
{
|
||||||
result += (*it)->CheckString();
|
result += (*it)->CheckString();
|
||||||
result += ",";
|
result += ",";
|
||||||
|
@ -388,22 +388,22 @@ char* BroString::VecToString(const Vec* vec)
|
||||||
return strdup(result.c_str());
|
return strdup(result.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BroStringLenCmp::operator()(BroString * const& bst1,
|
bool StringLenCmp::operator()(String * const& bst1,
|
||||||
BroString * const& bst2)
|
String * const& bst2)
|
||||||
{
|
{
|
||||||
return _increasing ? (bst1->Len() < bst2->Len()) :
|
return _increasing ? (bst1->Len() < bst2->Len()) :
|
||||||
(bst1->Len() > bst2->Len());
|
(bst1->Len() > bst2->Len());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostream& operator<<(std::ostream& os, const BroString& bs)
|
std::ostream& operator<<(std::ostream& os, const String& bs)
|
||||||
{
|
{
|
||||||
char* tmp = bs.Render(BroString::EXPANDED_STRING);
|
char* tmp = bs.Render(String::EXPANDED_STRING);
|
||||||
os << tmp;
|
os << tmp;
|
||||||
delete [] tmp;
|
delete [] tmp;
|
||||||
return os;
|
return os;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Bstr_eq(const BroString* s1, const BroString* s2)
|
int Bstr_eq(const String* s1, const String* s2)
|
||||||
{
|
{
|
||||||
if ( s1->Len() != s2->Len() )
|
if ( s1->Len() != s2->Len() )
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -411,7 +411,7 @@ int Bstr_eq(const BroString* s1, const BroString* s2)
|
||||||
return memcmp(s1->Bytes(), s2->Bytes(), s1->Len()) == 0;
|
return memcmp(s1->Bytes(), s2->Bytes(), s1->Len()) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Bstr_cmp(const BroString* s1, const BroString* s2)
|
int Bstr_cmp(const String* s1, const String* s2)
|
||||||
{
|
{
|
||||||
int n = std::min(s1->Len(), s2->Len());
|
int n = std::min(s1->Len(), s2->Len());
|
||||||
int cmp = memcmp(s1->Bytes(), s2->Bytes(), n);
|
int cmp = memcmp(s1->Bytes(), s2->Bytes(), n);
|
||||||
|
@ -427,7 +427,7 @@ int Bstr_cmp(const BroString* s1, const BroString* s2)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
BroString* concatenate(std::vector<data_chunk_t>& v)
|
String* concatenate(std::vector<data_chunk_t>& v)
|
||||||
{
|
{
|
||||||
int n = v.size();
|
int n = v.size();
|
||||||
int len = 0;
|
int len = 0;
|
||||||
|
@ -446,10 +446,10 @@ BroString* concatenate(std::vector<data_chunk_t>& v)
|
||||||
|
|
||||||
*b = '\0';
|
*b = '\0';
|
||||||
|
|
||||||
return new BroString(true, (byte_vec) data, len);
|
return new String(true, (byte_vec) data, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
BroString* concatenate(BroString::CVec& v)
|
String* concatenate(String::CVec& v)
|
||||||
{
|
{
|
||||||
int n = v.size();
|
int n = v.size();
|
||||||
int len = 0;
|
int len = 0;
|
||||||
|
@ -467,20 +467,20 @@ BroString* concatenate(BroString::CVec& v)
|
||||||
}
|
}
|
||||||
*b = '\0';
|
*b = '\0';
|
||||||
|
|
||||||
return new BroString(true, (byte_vec) data, len);
|
return new String(true, (byte_vec) data, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
BroString* concatenate(BroString::Vec& v)
|
String* concatenate(String::Vec& v)
|
||||||
{
|
{
|
||||||
BroString::CVec cv;
|
String::CVec cv;
|
||||||
|
|
||||||
for ( BroString::VecIt it = v.begin(); it != v.end(); ++it )
|
for ( String::VecIt it = v.begin(); it != v.end(); ++it )
|
||||||
cv.push_back(*it);
|
cv.push_back(*it);
|
||||||
|
|
||||||
return concatenate(cv);
|
return concatenate(cv);
|
||||||
}
|
}
|
||||||
|
|
||||||
void delete_strings(std::vector<const BroString*>& v)
|
void delete_strings(std::vector<const String*>& v)
|
||||||
{
|
{
|
||||||
for ( unsigned int i = 0; i < v.size(); ++i )
|
for ( unsigned int i = 0; i < v.size(); ++i )
|
||||||
delete v[i];
|
delete v[i];
|
||||||
|
|
|
@ -19,13 +19,13 @@ namespace zeek {
|
||||||
|
|
||||||
typedef u_char* byte_vec;
|
typedef u_char* byte_vec;
|
||||||
|
|
||||||
class BroString {
|
class String {
|
||||||
public:
|
public:
|
||||||
typedef std::vector<BroString*> Vec;
|
typedef std::vector<String*> Vec;
|
||||||
typedef Vec::iterator VecIt;
|
typedef Vec::iterator VecIt;
|
||||||
typedef Vec::const_iterator VecCIt;
|
typedef Vec::const_iterator VecCIt;
|
||||||
|
|
||||||
typedef std::vector<const BroString*> CVec;
|
typedef std::vector<const String*> CVec;
|
||||||
typedef Vec::iterator CVecIt;
|
typedef Vec::iterator CVecIt;
|
||||||
typedef Vec::const_iterator CVecCIt;
|
typedef Vec::const_iterator CVecCIt;
|
||||||
|
|
||||||
|
@ -35,20 +35,20 @@ public:
|
||||||
typedef IdxVec::const_iterator IdxVecCIt;
|
typedef IdxVec::const_iterator IdxVecCIt;
|
||||||
|
|
||||||
// Constructors creating internal copies of the data passed in.
|
// Constructors creating internal copies of the data passed in.
|
||||||
BroString(const u_char* str, int arg_n, bool add_NUL);
|
String(const u_char* str, int arg_n, bool add_NUL);
|
||||||
explicit BroString(const char* str);
|
explicit String(const char* str);
|
||||||
explicit BroString(const std::string& str);
|
explicit String(const std::string& str);
|
||||||
BroString(const BroString& bs);
|
String(const String& bs);
|
||||||
|
|
||||||
// Constructor that takes owernship of the vector passed in.
|
// Constructor that takes owernship of the vector passed in.
|
||||||
BroString(bool arg_final_NUL, byte_vec str, int arg_n);
|
String(bool arg_final_NUL, byte_vec str, int arg_n);
|
||||||
|
|
||||||
BroString();
|
String();
|
||||||
~BroString() { Reset(); }
|
~String() { Reset(); }
|
||||||
|
|
||||||
const BroString& operator=(const BroString& bs);
|
const String& operator=(const String& bs);
|
||||||
bool operator==(const BroString& bs) const;
|
bool operator==(const String& bs) const;
|
||||||
bool operator<(const BroString& bs) const;
|
bool operator<(const String& bs) const;
|
||||||
|
|
||||||
byte_vec Bytes() const { return b; }
|
byte_vec Bytes() const { return b; }
|
||||||
int Len() const { return n; }
|
int Len() const { return n; }
|
||||||
|
@ -66,7 +66,7 @@ public:
|
||||||
void Set(const u_char* str, int len, bool add_NUL=true);
|
void Set(const u_char* str, int len, bool add_NUL=true);
|
||||||
void Set(const char* str);
|
void Set(const char* str);
|
||||||
void Set(const std::string& str);
|
void Set(const std::string& str);
|
||||||
void Set(const BroString &str);
|
void Set(const String &str);
|
||||||
|
|
||||||
void SetUseFreeToDelete(int use_it)
|
void SetUseFreeToDelete(int use_it)
|
||||||
{ use_free_to_delete = use_it; }
|
{ use_free_to_delete = use_it; }
|
||||||
|
@ -113,7 +113,7 @@ public:
|
||||||
std::istream& Read(std::istream& is, int format = ESC_SER);
|
std::istream& Read(std::istream& is, int format = ESC_SER);
|
||||||
|
|
||||||
// XXX Fix redundancy: strings.bif implements both to_lower
|
// XXX Fix redundancy: strings.bif implements both to_lower
|
||||||
// XXX and to_upper; the latter doesn't use BroString::ToUpper().
|
// XXX and to_upper; the latter doesn't use String::ToUpper().
|
||||||
void ToUpper();
|
void ToUpper();
|
||||||
|
|
||||||
unsigned int MemoryAllocation() const;
|
unsigned int MemoryAllocation() const;
|
||||||
|
@ -123,12 +123,12 @@ public:
|
||||||
// A negative @length means "until end of string". Other invalid
|
// A negative @length means "until end of string". Other invalid
|
||||||
// values result in a return value of 0.
|
// values result in a return value of 0.
|
||||||
//
|
//
|
||||||
BroString* GetSubstring(int start, int length) const;
|
String* GetSubstring(int start, int length) const;
|
||||||
|
|
||||||
// Returns the start index of s in this string, counting from 0.
|
// Returns the start index of s in this string, counting from 0.
|
||||||
// If s is not found, -1 is returned.
|
// If s is not found, -1 is returned.
|
||||||
//
|
//
|
||||||
int FindSubstring(const BroString* s) const;
|
int FindSubstring(const String* s) const;
|
||||||
|
|
||||||
// Splits the string into substrings, taking all the indices in
|
// Splits the string into substrings, taking all the indices in
|
||||||
// the given vector as cutting points. The vector does not need
|
// the given vector as cutting points. The vector does not need
|
||||||
|
@ -151,28 +151,28 @@ protected:
|
||||||
bool use_free_to_delete; // free() vs. operator delete
|
bool use_free_to_delete; // free() vs. operator delete
|
||||||
};
|
};
|
||||||
|
|
||||||
// A comparison class that sorts pointers to BroString's according to
|
// A comparison class that sorts pointers to String's according to
|
||||||
// the length of the pointed-to strings. Sort order can be specified
|
// the length of the pointed-to strings. Sort order can be specified
|
||||||
// through the constructor.
|
// through the constructor.
|
||||||
//
|
//
|
||||||
class BroStringLenCmp {
|
class StringLenCmp {
|
||||||
public:
|
public:
|
||||||
explicit BroStringLenCmp(bool increasing = true) { _increasing = increasing; }
|
explicit StringLenCmp(bool increasing = true) { _increasing = increasing; }
|
||||||
bool operator()(BroString*const& bst1, BroString*const& bst2);
|
bool operator()(String*const& bst1, String*const& bst2);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
unsigned int _increasing;
|
unsigned int _increasing;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Default output stream operator, using rendering mode EXPANDED_STRING.
|
// Default output stream operator, using rendering mode EXPANDED_STRING.
|
||||||
std::ostream& operator<<(std::ostream& os, const BroString& bs);
|
std::ostream& operator<<(std::ostream& os, const String& bs);
|
||||||
|
|
||||||
extern int Bstr_eq(const BroString* s1, const BroString* s2);
|
extern int Bstr_eq(const String* s1, const String* s2);
|
||||||
extern int Bstr_cmp(const BroString* s1, const BroString* s2);
|
extern int Bstr_cmp(const String* s1, const String* s2);
|
||||||
|
|
||||||
// A data_chunk_t specifies a length-delimited constant string. It is
|
// A data_chunk_t specifies a length-delimited constant string. It is
|
||||||
// often used for substrings of other BroString's to avoid memory copy,
|
// often used for substrings of other String's to avoid memory copy,
|
||||||
// which would be necessary if BroString were used. Unlike BroString,
|
// which would be necessary if String were used. Unlike String,
|
||||||
// the string should not be deallocated on destruction.
|
// the string should not be deallocated on destruction.
|
||||||
//
|
//
|
||||||
// "BroConstString" might be a better name here.
|
// "BroConstString" might be a better name here.
|
||||||
|
@ -182,14 +182,14 @@ struct data_chunk_t {
|
||||||
const char* data;
|
const char* data;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern BroString* concatenate(std::vector<data_chunk_t>& v);
|
extern String* concatenate(std::vector<data_chunk_t>& v);
|
||||||
extern BroString* concatenate(BroString::Vec& v);
|
extern String* concatenate(String::Vec& v);
|
||||||
extern BroString* concatenate(BroString::CVec& v);
|
extern String* concatenate(String::CVec& v);
|
||||||
extern void delete_strings(std::vector<const BroString*>& v);
|
extern void delete_strings(std::vector<const String*>& v);
|
||||||
|
|
||||||
} // namespace zeek
|
} // namespace zeek
|
||||||
|
|
||||||
using BroString [[deprecated("Remove in v4.1. Use zeek::BroString instead.")]] = zeek::BroString;
|
using BroString [[deprecated("Remove in v4.1. Use zeek::String instead.")]] = zeek::String;
|
||||||
using BroStringLenCmp [[deprecated("Remove in v4.1. Use zeek::BroStringLenCmp instead.")]] = zeek::BroStringLenCmp;
|
using BroStringLenCmp [[deprecated("Remove in v4.1. Use zeek::StringLenCmp instead.")]] = zeek::StringLenCmp;
|
||||||
using byte_vec [[deprecated("Remove in v4.1. Use zeek::byte_vec instead.")]] = zeek::byte_vec;
|
using byte_vec [[deprecated("Remove in v4.1. Use zeek::byte_vec instead.")]] = zeek::byte_vec;
|
||||||
using data_chunk_t [[deprecated("Remove in v4.1. Use zeek::data_chunk_t instead.")]] = zeek::data_chunk_t;
|
using data_chunk_t [[deprecated("Remove in v4.1. Use zeek::data_chunk_t instead.")]] = zeek::data_chunk_t;
|
||||||
|
|
|
@ -317,7 +317,7 @@ char* CompositeHash::SingleValHash(bool type_check, char* kp0,
|
||||||
{
|
{
|
||||||
// Align to int for the length field.
|
// Align to int for the length field.
|
||||||
int* kp = AlignAndPadType<int>(kp0);
|
int* kp = AlignAndPadType<int>(kp0);
|
||||||
const zeek::BroString* sval = v->AsString();
|
const zeek::String* sval = v->AsString();
|
||||||
|
|
||||||
*kp = sval->Len(); // so we can recover the value
|
*kp = sval->Len(); // so we can recover the value
|
||||||
|
|
||||||
|
@ -1047,7 +1047,7 @@ const char* CompositeHash::RecoverOneVal(
|
||||||
kp1 = reinterpret_cast<const char*>(kp+1);
|
kp1 = reinterpret_cast<const char*>(kp+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
*pval = zeek::make_intrusive<zeek::StringVal>(new zeek::BroString((const zeek::byte_vec) kp1, n, true));
|
*pval = zeek::make_intrusive<zeek::StringVal>(new zeek::String((const zeek::byte_vec) kp1, n, true));
|
||||||
kp1 += n;
|
kp1 += n;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -197,7 +197,7 @@ void ODesc::AddCS(const char* s)
|
||||||
Add(s);
|
Add(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ODesc::AddBytes(const zeek::BroString* s)
|
void ODesc::AddBytes(const zeek::String* s)
|
||||||
{
|
{
|
||||||
if ( IsReadable() )
|
if ( IsReadable() )
|
||||||
{
|
{
|
||||||
|
@ -205,7 +205,7 @@ void ODesc::AddBytes(const zeek::BroString* s)
|
||||||
AddBytes(reinterpret_cast<const char*>(s->Bytes()), s->Len());
|
AddBytes(reinterpret_cast<const char*>(s->Bytes()), s->Len());
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const char* str = s->Render(zeek::BroString::EXPANDED_STRING);
|
const char* str = s->Render(zeek::String::EXPANDED_STRING);
|
||||||
Add(str);
|
Add(str);
|
||||||
delete [] str;
|
delete [] str;
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,7 +93,7 @@ public:
|
||||||
// Add s as a counted string.
|
// Add s as a counted string.
|
||||||
void AddCS(const char* s);
|
void AddCS(const char* s);
|
||||||
|
|
||||||
void AddBytes(const zeek::BroString* s);
|
void AddBytes(const zeek::String* s);
|
||||||
|
|
||||||
void Add(const char* s1, const char* s2)
|
void Add(const char* s1, const char* s2)
|
||||||
{ Add(s1); Add(s2); }
|
{ Add(s1); Add(s2); }
|
||||||
|
|
|
@ -163,5 +163,5 @@ zeek::Val* Discarder::BuildData(const u_char* data, int hdrlen, int len, int cap
|
||||||
|
|
||||||
len = std::max(std::min(std::min(len, caplen), discarder_maxlen), 0);
|
len = std::max(std::min(std::min(len, caplen), discarder_maxlen), 0);
|
||||||
|
|
||||||
return new zeek::StringVal(new zeek::BroString(data, len, true));
|
return new zeek::StringVal(new zeek::String(data, len, true));
|
||||||
}
|
}
|
||||||
|
|
20
src/Expr.cc
20
src/Expr.cc
|
@ -692,8 +692,8 @@ ValPtr BinaryExpr::Fold(Val* v1, Val* v2) const
|
||||||
|
|
||||||
ValPtr BinaryExpr::StringFold(Val* v1, Val* v2) const
|
ValPtr BinaryExpr::StringFold(Val* v1, Val* v2) const
|
||||||
{
|
{
|
||||||
const BroString* s1 = v1->AsString();
|
const String* s1 = v1->AsString();
|
||||||
const BroString* s2 = v2->AsString();
|
const String* s2 = v2->AsString();
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
|
||||||
switch ( tag ) {
|
switch ( tag ) {
|
||||||
|
@ -710,7 +710,7 @@ ValPtr BinaryExpr::StringFold(Val* v1, Val* v2) const
|
||||||
case EXPR_ADD:
|
case EXPR_ADD:
|
||||||
case EXPR_ADD_TO:
|
case EXPR_ADD_TO:
|
||||||
{
|
{
|
||||||
std::vector<const BroString*> strings;
|
std::vector<const String*> strings;
|
||||||
strings.push_back(s1);
|
strings.push_back(s1);
|
||||||
strings.push_back(s2);
|
strings.push_back(s2);
|
||||||
|
|
||||||
|
@ -1760,7 +1760,7 @@ ValPtr EqExpr::Fold(Val* v1, Val* v2) const
|
||||||
if ( op1->GetType()->Tag() == zeek::TYPE_PATTERN )
|
if ( op1->GetType()->Tag() == zeek::TYPE_PATTERN )
|
||||||
{
|
{
|
||||||
RE_Matcher* re = v1->AsPattern();
|
RE_Matcher* re = v1->AsPattern();
|
||||||
const BroString* s = v2->AsString();
|
const String* s = v2->AsString();
|
||||||
if ( tag == EXPR_EQ )
|
if ( tag == EXPR_EQ )
|
||||||
return zeek::val_mgr->Bool(re->MatchExactly(s));
|
return zeek::val_mgr->Bool(re->MatchExactly(s));
|
||||||
else
|
else
|
||||||
|
@ -2661,9 +2661,9 @@ ValPtr IndexExpr::Fold(Val* v1, Val* v2) const
|
||||||
case zeek::TYPE_STRING:
|
case zeek::TYPE_STRING:
|
||||||
{
|
{
|
||||||
const ListVal* lv = v2->AsListVal();
|
const ListVal* lv = v2->AsListVal();
|
||||||
const BroString* s = v1->AsString();
|
const String* s = v1->AsString();
|
||||||
int len = s->Len();
|
int len = s->Len();
|
||||||
BroString* substring = nullptr;
|
String* substring = nullptr;
|
||||||
|
|
||||||
if ( lv->Length() == 1 )
|
if ( lv->Length() == 1 )
|
||||||
{
|
{
|
||||||
|
@ -2687,7 +2687,7 @@ ValPtr IndexExpr::Fold(Val* v1, Val* v2) const
|
||||||
substring = s->GetSubstring(first, substring_len);
|
substring = s->GetSubstring(first, substring_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(substring ? substring : new BroString(""));
|
return zeek::make_intrusive<zeek::StringVal>(substring ? substring : new String(""));
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -3948,14 +3948,14 @@ ValPtr InExpr::Fold(Val* v1, Val* v2) const
|
||||||
if ( v1->GetType()->Tag() == zeek::TYPE_PATTERN )
|
if ( v1->GetType()->Tag() == zeek::TYPE_PATTERN )
|
||||||
{
|
{
|
||||||
RE_Matcher* re = v1->AsPattern();
|
RE_Matcher* re = v1->AsPattern();
|
||||||
const BroString* s = v2->AsString();
|
const String* s = v2->AsString();
|
||||||
return zeek::val_mgr->Bool(re->MatchAnywhere(s) != 0);
|
return zeek::val_mgr->Bool(re->MatchAnywhere(s) != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( v2->GetType()->Tag() == zeek::TYPE_STRING )
|
if ( v2->GetType()->Tag() == zeek::TYPE_STRING )
|
||||||
{
|
{
|
||||||
const BroString* s1 = v1->AsString();
|
const String* s1 = v1->AsString();
|
||||||
const BroString* s2 = v2->AsString();
|
const String* s2 = v2->AsString();
|
||||||
|
|
||||||
// Could do better here e.g. Boyer-Moore if done repeatedly.
|
// Could do better here e.g. Boyer-Moore if done repeatedly.
|
||||||
auto s = reinterpret_cast<const unsigned char*>(s1->CheckString());
|
auto s = reinterpret_cast<const unsigned char*>(s1->CheckString());
|
||||||
|
|
|
@ -145,7 +145,7 @@ HashKey::HashKey(const char* s)
|
||||||
hash = HashBytes(key, size);
|
hash = HashBytes(key, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
HashKey::HashKey(const zeek::BroString* s)
|
HashKey::HashKey(const zeek::String* s)
|
||||||
{
|
{
|
||||||
size = s->Len();
|
size = s->Len();
|
||||||
key = (void*) s->Bytes();
|
key = (void*) s->Bytes();
|
||||||
|
|
|
@ -27,7 +27,9 @@
|
||||||
#include "ZeekArgs.h"
|
#include "ZeekArgs.h"
|
||||||
|
|
||||||
ZEEK_FORWARD_DECLARE_NAMESPACED(Frame, zeek::detail);
|
ZEEK_FORWARD_DECLARE_NAMESPACED(Frame, zeek::detail);
|
||||||
ZEEK_FORWARD_DECLARE_NAMESPACED(BroString, zeek);
|
|
||||||
|
namespace zeek { class String; }
|
||||||
|
using BroString [[deprecated("Remove in v4.1. Use zeek::String instead.")]] = zeek::String;
|
||||||
|
|
||||||
class BifReturnVal;
|
class BifReturnVal;
|
||||||
namespace zeek::BifFunc {
|
namespace zeek::BifFunc {
|
||||||
|
@ -215,7 +217,7 @@ public:
|
||||||
explicit HashKey(double d);
|
explicit HashKey(double d);
|
||||||
explicit HashKey(const void* p);
|
explicit HashKey(const void* p);
|
||||||
explicit HashKey(const char* s);
|
explicit HashKey(const char* s);
|
||||||
explicit HashKey(const zeek::BroString* s);
|
explicit HashKey(const zeek::String* s);
|
||||||
~HashKey()
|
~HashKey()
|
||||||
{
|
{
|
||||||
if ( is_our_dynamic )
|
if ( is_our_dynamic )
|
||||||
|
|
|
@ -38,7 +38,7 @@ static zeek::VectorValPtr BuildOptionsVal(const u_char* data, int len)
|
||||||
uint16_t off = 2 * sizeof(uint8_t);
|
uint16_t off = 2 * sizeof(uint8_t);
|
||||||
rv->Assign(1, zeek::val_mgr->Count(opt->ip6o_len));
|
rv->Assign(1, zeek::val_mgr->Count(opt->ip6o_len));
|
||||||
rv->Assign(2, zeek::make_intrusive<zeek::StringVal>(
|
rv->Assign(2, zeek::make_intrusive<zeek::StringVal>(
|
||||||
new zeek::BroString(data + off, opt->ip6o_len, true)));
|
new zeek::String(data + off, opt->ip6o_len, true)));
|
||||||
data += opt->ip6o_len + off;
|
data += opt->ip6o_len + off;
|
||||||
len -= opt->ip6o_len + off;
|
len -= opt->ip6o_len + off;
|
||||||
}
|
}
|
||||||
|
@ -108,7 +108,7 @@ zeek::RecordValPtr IPv6_Hdr::ToVal(zeek::VectorValPtr chain) const
|
||||||
rv->Assign(2, zeek::val_mgr->Count(rt->ip6r_type));
|
rv->Assign(2, zeek::val_mgr->Count(rt->ip6r_type));
|
||||||
rv->Assign(3, zeek::val_mgr->Count(rt->ip6r_segleft));
|
rv->Assign(3, zeek::val_mgr->Count(rt->ip6r_segleft));
|
||||||
uint16_t off = 4 * sizeof(uint8_t);
|
uint16_t off = 4 * sizeof(uint8_t);
|
||||||
rv->Assign(4, zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(data + off, Length() - off, true)));
|
rv->Assign(4, zeek::make_intrusive<zeek::StringVal>(new zeek::String(data + off, Length() - off, true)));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -141,7 +141,7 @@ zeek::RecordValPtr IPv6_Hdr::ToVal(zeek::VectorValPtr chain) const
|
||||||
// Payload Len was non-zero for this header.
|
// Payload Len was non-zero for this header.
|
||||||
rv->Assign(4, zeek::val_mgr->Count(ntohl(((uint32_t*)data)[2])));
|
rv->Assign(4, zeek::val_mgr->Count(ntohl(((uint32_t*)data)[2])));
|
||||||
uint16_t off = 3 * sizeof(uint32_t);
|
uint16_t off = 3 * sizeof(uint32_t);
|
||||||
rv->Assign(5, zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(data + off, Length() - off, true)));
|
rv->Assign(5, zeek::make_intrusive<zeek::StringVal>(new zeek::String(data + off, Length() - off, true)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -47,7 +47,7 @@ ConnIDKey BuildConnIDKey(const ConnID& id)
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
IPAddr::IPAddr(const zeek::BroString& s)
|
IPAddr::IPAddr(const zeek::String& s)
|
||||||
{
|
{
|
||||||
Init(s.CheckString());
|
Init(s.CheckString());
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,8 @@
|
||||||
|
|
||||||
#include "threading/SerialTypes.h"
|
#include "threading/SerialTypes.h"
|
||||||
|
|
||||||
ZEEK_FORWARD_DECLARE_NAMESPACED(BroString, zeek);
|
namespace zeek { class String; }
|
||||||
|
using BroString [[deprecated("Remove in v4.1. Use zeek::String instead.")]] = zeek::String;
|
||||||
|
|
||||||
struct ConnID;
|
struct ConnID;
|
||||||
class HashKey;
|
class HashKey;
|
||||||
|
@ -111,7 +112,7 @@ public:
|
||||||
* @param s String containing an IP address as either a dotted IPv4
|
* @param s String containing an IP address as either a dotted IPv4
|
||||||
* address or a hex IPv6 address.
|
* address or a hex IPv6 address.
|
||||||
*/
|
*/
|
||||||
explicit IPAddr(const zeek::BroString& s);
|
explicit IPAddr(const zeek::String& s);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs an address instance from a raw byte representation.
|
* Constructs an address instance from a raw byte representation.
|
||||||
|
|
|
@ -230,7 +230,7 @@ void HashVal::digest_one(EVP_MD_CTX* h, const Val* v)
|
||||||
{
|
{
|
||||||
if ( v->GetType()->Tag() == zeek::TYPE_STRING )
|
if ( v->GetType()->Tag() == zeek::TYPE_STRING )
|
||||||
{
|
{
|
||||||
const BroString* str = v->AsString();
|
const String* str = v->AsString();
|
||||||
hash_update(h, str->Bytes(), str->Len());
|
hash_update(h, str->Bytes(), str->Len());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -209,7 +209,7 @@ bool Specific_RE_Matcher::MatchAll(const char* s)
|
||||||
return MatchAll((const u_char*)(s), strlen(s));
|
return MatchAll((const u_char*)(s), strlen(s));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Specific_RE_Matcher::MatchAll(const zeek::BroString* s)
|
bool Specific_RE_Matcher::MatchAll(const zeek::String* s)
|
||||||
{
|
{
|
||||||
// s->Len() does not include '\0'.
|
// s->Len() does not include '\0'.
|
||||||
return MatchAll(s->Bytes(), s->Len());
|
return MatchAll(s->Bytes(), s->Len());
|
||||||
|
@ -220,7 +220,7 @@ int Specific_RE_Matcher::Match(const char* s)
|
||||||
return Match((const u_char*)(s), strlen(s));
|
return Match((const u_char*)(s), strlen(s));
|
||||||
}
|
}
|
||||||
|
|
||||||
int Specific_RE_Matcher::Match(const zeek::BroString* s)
|
int Specific_RE_Matcher::Match(const zeek::String* s)
|
||||||
{
|
{
|
||||||
return Match(s->Bytes(), s->Len());
|
return Match(s->Bytes(), s->Len());
|
||||||
}
|
}
|
||||||
|
@ -230,7 +230,7 @@ int Specific_RE_Matcher::LongestMatch(const char* s)
|
||||||
return LongestMatch((const u_char*)(s), strlen(s));
|
return LongestMatch((const u_char*)(s), strlen(s));
|
||||||
}
|
}
|
||||||
|
|
||||||
int Specific_RE_Matcher::LongestMatch(const zeek::BroString* s)
|
int Specific_RE_Matcher::LongestMatch(const zeek::String* s)
|
||||||
{
|
{
|
||||||
return LongestMatch(s->Bytes(), s->Len());
|
return LongestMatch(s->Bytes(), s->Len());
|
||||||
}
|
}
|
||||||
|
|
15
src/RE.h
15
src/RE.h
|
@ -14,7 +14,8 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
typedef int (*cce_func)(int);
|
typedef int (*cce_func)(int);
|
||||||
|
|
||||||
ZEEK_FORWARD_DECLARE_NAMESPACED(BroString, zeek);
|
namespace zeek { class String; }
|
||||||
|
using BroString [[deprecated("Remove in v4.1. Use zeek::String instead.")]] = zeek::String;
|
||||||
|
|
||||||
class CCL;
|
class CCL;
|
||||||
class NFA_Machine;
|
class NFA_Machine;
|
||||||
|
@ -82,7 +83,7 @@ public:
|
||||||
void ConvertCCLs();
|
void ConvertCCLs();
|
||||||
|
|
||||||
bool MatchAll(const char* s);
|
bool MatchAll(const char* s);
|
||||||
bool MatchAll(const zeek::BroString* s);
|
bool MatchAll(const zeek::String* s);
|
||||||
|
|
||||||
// Compiles a set of regular expressions simultaniously.
|
// Compiles a set of regular expressions simultaniously.
|
||||||
// 'idx' contains indizes associated with the expressions.
|
// 'idx' contains indizes associated with the expressions.
|
||||||
|
@ -95,10 +96,10 @@ public:
|
||||||
// if the pattern matches empty strings, matching continues
|
// if the pattern matches empty strings, matching continues
|
||||||
// in an attempt to match at least one character.
|
// in an attempt to match at least one character.
|
||||||
int Match(const char* s);
|
int Match(const char* s);
|
||||||
int Match(const zeek::BroString* s);
|
int Match(const zeek::String* s);
|
||||||
|
|
||||||
int LongestMatch(const char* s);
|
int LongestMatch(const char* s);
|
||||||
int LongestMatch(const zeek::BroString* s);
|
int LongestMatch(const zeek::String* s);
|
||||||
int LongestMatch(const u_char* bv, int n);
|
int LongestMatch(const u_char* bv, int n);
|
||||||
|
|
||||||
EquivClass* EC() { return &equiv_class; }
|
EquivClass* EC() { return &equiv_class; }
|
||||||
|
@ -192,7 +193,7 @@ public:
|
||||||
// Returns true if s exactly matches the pattern, false otherwise.
|
// Returns true if s exactly matches the pattern, false otherwise.
|
||||||
bool MatchExactly(const char* s)
|
bool MatchExactly(const char* s)
|
||||||
{ return re_exact->MatchAll(s); }
|
{ return re_exact->MatchAll(s); }
|
||||||
bool MatchExactly(const zeek::BroString* s)
|
bool MatchExactly(const zeek::String* s)
|
||||||
{ return re_exact->MatchAll(s); }
|
{ return re_exact->MatchAll(s); }
|
||||||
|
|
||||||
// Returns the position in s just beyond where the first match
|
// Returns the position in s just beyond where the first match
|
||||||
|
@ -201,14 +202,14 @@ public:
|
||||||
// in an attempt to match at least one character.
|
// in an attempt to match at least one character.
|
||||||
int MatchAnywhere(const char* s)
|
int MatchAnywhere(const char* s)
|
||||||
{ return re_anywhere->Match(s); }
|
{ return re_anywhere->Match(s); }
|
||||||
int MatchAnywhere(const zeek::BroString* s)
|
int MatchAnywhere(const zeek::String* s)
|
||||||
{ return re_anywhere->Match(s); }
|
{ return re_anywhere->Match(s); }
|
||||||
|
|
||||||
// Note: it matches the *longest* prefix and returns the
|
// Note: it matches the *longest* prefix and returns the
|
||||||
// length of matched prefix. It returns -1 on mismatch.
|
// length of matched prefix. It returns -1 on mismatch.
|
||||||
int MatchPrefix(const char* s)
|
int MatchPrefix(const char* s)
|
||||||
{ return re_exact->LongestMatch(s); }
|
{ return re_exact->LongestMatch(s); }
|
||||||
int MatchPrefix(const zeek::BroString* s)
|
int MatchPrefix(const zeek::String* s)
|
||||||
{ return re_exact->LongestMatch(s); }
|
{ return re_exact->LongestMatch(s); }
|
||||||
int MatchPrefix(const u_char* s, int n)
|
int MatchPrefix(const u_char* s, int n)
|
||||||
{ return re_exact->LongestMatch(s, n); }
|
{ return re_exact->LongestMatch(s, n); }
|
||||||
|
|
|
@ -958,7 +958,7 @@ void RuleMatcher::Match(RuleEndpointState* state, Rule::PatternType type,
|
||||||
if ( ! state->matched_by_patterns.is_member(r) )
|
if ( ! state->matched_by_patterns.is_member(r) )
|
||||||
{
|
{
|
||||||
state->matched_by_patterns.push_back(r);
|
state->matched_by_patterns.push_back(r);
|
||||||
zeek::BroString* s = new zeek::BroString(data, data_len, false);
|
zeek::String* s = new zeek::String(data, data_len, false);
|
||||||
state->matched_text.push_back(s);
|
state->matched_text.push_back(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -998,7 +998,7 @@ void RuleMatcher::ExecPureRules(RuleEndpointState* state, bool eos)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RuleMatcher::ExecRulePurely(Rule* r, zeek::BroString* s,
|
bool RuleMatcher::ExecRulePurely(Rule* r, zeek::String* s,
|
||||||
RuleEndpointState* state, bool eos)
|
RuleEndpointState* state, bool eos)
|
||||||
{
|
{
|
||||||
if ( is_member_of(state->matched_rules, r->Index()) )
|
if ( is_member_of(state->matched_rules, r->Index()) )
|
||||||
|
@ -1377,7 +1377,7 @@ void id_to_maskedvallist(const char* id, maskedvalue_list* append_to,
|
||||||
|
|
||||||
char* id_to_str(const char* id)
|
char* id_to_str(const char* id)
|
||||||
{
|
{
|
||||||
const zeek::BroString* src;
|
const zeek::String* src;
|
||||||
char* dst;
|
char* dst;
|
||||||
|
|
||||||
zeek::Val* v = get_bro_val(id);
|
zeek::Val* v = get_bro_val(id);
|
||||||
|
|
|
@ -59,7 +59,7 @@ struct MaskedValue {
|
||||||
|
|
||||||
using maskedvalue_list = zeek::PList<MaskedValue>;
|
using maskedvalue_list = zeek::PList<MaskedValue>;
|
||||||
using string_list = zeek::PList<char>;
|
using string_list = zeek::PList<char>;
|
||||||
using bstr_list = zeek::PList<zeek::BroString>;
|
using bstr_list = zeek::PList<zeek::String>;
|
||||||
|
|
||||||
// Get values from Bro's script-level variables.
|
// Get values from Bro's script-level variables.
|
||||||
extern void id_to_maskedvallist(const char* id, maskedvalue_list* append_to,
|
extern void id_to_maskedvallist(const char* id, maskedvalue_list* append_to,
|
||||||
|
@ -338,7 +338,7 @@ private:
|
||||||
// Eval a rule under the assumption that all its patterns
|
// Eval a rule under the assumption that all its patterns
|
||||||
// have already matched. s holds the text the rule matched,
|
// have already matched. s holds the text the rule matched,
|
||||||
// or nil if N/A.
|
// or nil if N/A.
|
||||||
bool ExecRulePurely(Rule* r, zeek::BroString* s,
|
bool ExecRulePurely(Rule* r, zeek::String* s,
|
||||||
RuleEndpointState* state, bool eos);
|
RuleEndpointState* state, bool eos);
|
||||||
|
|
||||||
// Execute the actions associated with a rule.
|
// Execute the actions associated with a rule.
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#include "Val.h"
|
#include "Val.h"
|
||||||
|
|
||||||
BroSubstring::BroSubstring(const BroSubstring& bst)
|
BroSubstring::BroSubstring(const BroSubstring& bst)
|
||||||
: zeek::BroString((const zeek::BroString&) bst), _num(), _new(bst._new)
|
: zeek::String((const zeek::String&) bst), _num(), _new(bst._new)
|
||||||
{
|
{
|
||||||
for ( BSSAlignVecCIt it = bst._aligns.begin(); it != bst._aligns.end(); ++it )
|
for ( BSSAlignVecCIt it = bst._aligns.begin(); it != bst._aligns.end(); ++it )
|
||||||
_aligns.push_back(*it);
|
_aligns.push_back(*it);
|
||||||
|
@ -20,7 +20,7 @@ BroSubstring::BroSubstring(const BroSubstring& bst)
|
||||||
|
|
||||||
const BroSubstring& BroSubstring::operator=(const BroSubstring& bst)
|
const BroSubstring& BroSubstring::operator=(const BroSubstring& bst)
|
||||||
{
|
{
|
||||||
zeek::BroString::operator=(bst);
|
zeek::String::operator=(bst);
|
||||||
|
|
||||||
_aligns.clear();
|
_aligns.clear();
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ const BroSubstring& BroSubstring::operator=(const BroSubstring& bst)
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BroSubstring::AddAlignment(const zeek::BroString* str, int index)
|
void BroSubstring::AddAlignment(const zeek::String* str, int index)
|
||||||
{
|
{
|
||||||
_aligns.push_back(BSSAlign(str, index));
|
_aligns.push_back(BSSAlign(str, index));
|
||||||
}
|
}
|
||||||
|
@ -72,7 +72,7 @@ zeek::VectorVal* BroSubstring::VecToPolicy(Vec* vec)
|
||||||
BroSubstring* bst = (*vec)[i];
|
BroSubstring* bst = (*vec)[i];
|
||||||
|
|
||||||
auto st_val = zeek::make_intrusive<zeek::RecordVal>(sw_substring_type);
|
auto st_val = zeek::make_intrusive<zeek::RecordVal>(sw_substring_type);
|
||||||
st_val->Assign(0, zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(*bst)));
|
st_val->Assign(0, zeek::make_intrusive<zeek::StringVal>(new zeek::String(*bst)));
|
||||||
|
|
||||||
auto aligns = zeek::make_intrusive<zeek::VectorVal>(sw_align_vec_type);
|
auto aligns = zeek::make_intrusive<zeek::VectorVal>(sw_align_vec_type);
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ zeek::VectorVal* BroSubstring::VecToPolicy(Vec* vec)
|
||||||
const BSSAlign& align = (bst->GetAlignments())[j];
|
const BSSAlign& align = (bst->GetAlignments())[j];
|
||||||
|
|
||||||
auto align_val = zeek::make_intrusive<zeek::RecordVal>(sw_align_type);
|
auto align_val = zeek::make_intrusive<zeek::RecordVal>(sw_align_type);
|
||||||
align_val->Assign(0, zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(*align.string)));
|
align_val->Assign(0, zeek::make_intrusive<zeek::StringVal>(new zeek::String(*align.string)));
|
||||||
align_val->Assign(1, zeek::val_mgr->Count(align.index));
|
align_val->Assign(1, zeek::val_mgr->Count(align.index));
|
||||||
|
|
||||||
aligns->Assign(j + 1, std::move(align_val));
|
aligns->Assign(j + 1, std::move(align_val));
|
||||||
|
@ -107,14 +107,14 @@ BroSubstring::Vec* BroSubstring::VecFromPolicy(zeek::VectorVal* vec)
|
||||||
if ( ! v )
|
if ( ! v )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
const zeek::BroString* str = v->AsRecordVal()->GetField(0)->AsString();
|
const zeek::String* str = v->AsRecordVal()->GetField(0)->AsString();
|
||||||
BroSubstring* substr = new BroSubstring(*str);
|
BroSubstring* substr = new BroSubstring(*str);
|
||||||
|
|
||||||
const zeek::VectorVal* aligns = v->AsRecordVal()->GetField(1)->AsVectorVal();
|
const zeek::VectorVal* aligns = v->AsRecordVal()->GetField(1)->AsVectorVal();
|
||||||
for ( unsigned int j = 1; j <= aligns->Size(); ++j )
|
for ( unsigned int j = 1; j <= aligns->Size(); ++j )
|
||||||
{
|
{
|
||||||
const zeek::RecordVal* align = aligns->AsVectorVal()->At(j)->AsRecordVal();
|
const zeek::RecordVal* align = aligns->AsVectorVal()->At(j)->AsRecordVal();
|
||||||
const zeek::BroString* str = align->GetField(0)->AsString();
|
const zeek::String* str = align->GetField(0)->AsString();
|
||||||
int index = align->GetField(1)->AsCount();
|
int index = align->GetField(1)->AsCount();
|
||||||
substr->AddAlignment(str, index);
|
substr->AddAlignment(str, index);
|
||||||
}
|
}
|
||||||
|
@ -142,9 +142,9 @@ char* BroSubstring::VecToString(Vec* vec)
|
||||||
return strdup(result.c_str());
|
return strdup(result.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::BroString::IdxVec* BroSubstring::GetOffsetsVec(const Vec* vec, unsigned int index)
|
zeek::String::IdxVec* BroSubstring::GetOffsetsVec(const Vec* vec, unsigned int index)
|
||||||
{
|
{
|
||||||
zeek::BroString::IdxVec* result = new zeek::BroString::IdxVec();
|
zeek::String::IdxVec* result = new zeek::String::IdxVec();
|
||||||
|
|
||||||
for ( VecCIt it = vec->begin(); it != vec->end(); ++it )
|
for ( VecCIt it = vec->begin(); it != vec->end(); ++it )
|
||||||
{
|
{
|
||||||
|
@ -209,7 +209,7 @@ struct SWNode {
|
||||||
//
|
//
|
||||||
class SWNodeMatrix {
|
class SWNodeMatrix {
|
||||||
public:
|
public:
|
||||||
SWNodeMatrix(const zeek::BroString* s1, const zeek::BroString* s2)
|
SWNodeMatrix(const zeek::String* s1, const zeek::String* s2)
|
||||||
: _s1(s1), _s2(s2), _rows(s1->Len() + 1), _cols(s2->Len() + 1)
|
: _s1(s1), _s2(s2), _rows(s1->Len() + 1), _cols(s2->Len() + 1)
|
||||||
{
|
{
|
||||||
_nodes = new SWNode[_cols * _rows];
|
_nodes = new SWNode[_cols * _rows];
|
||||||
|
@ -229,8 +229,8 @@ public:
|
||||||
return &(_nodes[row * _cols + col]);
|
return &(_nodes[row * _cols + col]);
|
||||||
}
|
}
|
||||||
|
|
||||||
const zeek::BroString* GetRowsString() const { return _s1; }
|
const zeek::String* GetRowsString() const { return _s1; }
|
||||||
const zeek::BroString* GetColsString() const { return _s2; }
|
const zeek::String* GetColsString() const { return _s2; }
|
||||||
|
|
||||||
int GetHeight() const { return _rows; }
|
int GetHeight() const { return _rows; }
|
||||||
int GetWidth() const { return _cols; }
|
int GetWidth() const { return _cols; }
|
||||||
|
@ -247,8 +247,8 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const zeek::BroString* _s1;
|
const zeek::String* _s1;
|
||||||
const zeek::BroString* _s2;
|
const zeek::String* _s2;
|
||||||
|
|
||||||
int _rows, _cols;
|
int _rows, _cols;
|
||||||
SWNode* _nodes;
|
SWNode* _nodes;
|
||||||
|
@ -398,7 +398,7 @@ end_loop:
|
||||||
|
|
||||||
// The main Smith-Waterman algorithm.
|
// The main Smith-Waterman algorithm.
|
||||||
//
|
//
|
||||||
BroSubstring::Vec* smith_waterman(const zeek::BroString* s1, const zeek::BroString* s2,
|
BroSubstring::Vec* smith_waterman(const zeek::String* s1, const zeek::String* s2,
|
||||||
SWParams& params)
|
SWParams& params)
|
||||||
{
|
{
|
||||||
BroSubstring::Vec* result = new BroSubstring::Vec();
|
BroSubstring::Vec* result = new BroSubstring::Vec();
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
// for each of which we store where the substring starts.
|
// for each of which we store where the substring starts.
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
class BroSubstring : public zeek::BroString {
|
class BroSubstring : public zeek::String {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef std::vector<BroSubstring*> Vec;
|
typedef std::vector<BroSubstring*> Vec;
|
||||||
|
@ -22,12 +22,12 @@ public:
|
||||||
//
|
//
|
||||||
struct BSSAlign {
|
struct BSSAlign {
|
||||||
|
|
||||||
BSSAlign(const zeek::BroString* string, int index)
|
BSSAlign(const zeek::String* string, int index)
|
||||||
{ this->string = string; this->index = index; }
|
{ this->string = string; this->index = index; }
|
||||||
|
|
||||||
// The other string
|
// The other string
|
||||||
//
|
//
|
||||||
const zeek::BroString* string;
|
const zeek::String* string;
|
||||||
|
|
||||||
// Offset in the string that substring
|
// Offset in the string that substring
|
||||||
// starts at, counting from 0.
|
// starts at, counting from 0.
|
||||||
|
@ -40,10 +40,10 @@ public:
|
||||||
typedef BSSAlignVec::const_iterator BSSAlignVecCIt;
|
typedef BSSAlignVec::const_iterator BSSAlignVecCIt;
|
||||||
|
|
||||||
explicit BroSubstring(const std::string& string)
|
explicit BroSubstring(const std::string& string)
|
||||||
: zeek::BroString(string), _num(), _new(false) { }
|
: zeek::String(string), _num(), _new(false) { }
|
||||||
|
|
||||||
explicit BroSubstring(const zeek::BroString& string)
|
explicit BroSubstring(const zeek::String& string)
|
||||||
: zeek::BroString(string), _num(), _new(false) { }
|
: zeek::String(string), _num(), _new(false) { }
|
||||||
|
|
||||||
BroSubstring(const BroSubstring& bst);
|
BroSubstring(const BroSubstring& bst);
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ public:
|
||||||
//
|
//
|
||||||
bool DoesCover(const BroSubstring* bst) const;
|
bool DoesCover(const BroSubstring* bst) const;
|
||||||
|
|
||||||
void AddAlignment(const zeek::BroString* string, int index);
|
void AddAlignment(const zeek::String* string, int index);
|
||||||
const BSSAlignVec& GetAlignments() const { return _aligns; }
|
const BSSAlignVec& GetAlignments() const { return _aligns; }
|
||||||
unsigned int GetNumAlignments() const { return _aligns.size(); }
|
unsigned int GetNumAlignments() const { return _aligns.size(); }
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ public:
|
||||||
static zeek::VectorVal* VecToPolicy(Vec* vec);
|
static zeek::VectorVal* VecToPolicy(Vec* vec);
|
||||||
static Vec* VecFromPolicy(zeek::VectorVal* vec);
|
static Vec* VecFromPolicy(zeek::VectorVal* vec);
|
||||||
static char* VecToString(Vec* vec);
|
static char* VecToString(Vec* vec);
|
||||||
static zeek::BroString::IdxVec* GetOffsetsVec(const Vec* vec,
|
static zeek::String::IdxVec* GetOffsetsVec(const Vec* vec,
|
||||||
unsigned int index);
|
unsigned int index);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -148,6 +148,6 @@ struct SWParams {
|
||||||
// input strings where the string occurs. On error, or if no common
|
// input strings where the string occurs. On error, or if no common
|
||||||
// subsequence exists, an empty vector is returned.
|
// subsequence exists, an empty vector is returned.
|
||||||
//
|
//
|
||||||
extern BroSubstring::Vec* smith_waterman(const zeek::BroString* s1,
|
extern BroSubstring::Vec* smith_waterman(const zeek::String* s1,
|
||||||
const zeek::BroString* s2,
|
const zeek::String* s2,
|
||||||
SWParams& params);
|
SWParams& params);
|
||||||
|
|
14
src/Val.cc
14
src/Val.cc
|
@ -970,17 +970,17 @@ ValPtr SubNetVal::DoClone(CloneState* state)
|
||||||
return {NewRef{}, this};
|
return {NewRef{}, this};
|
||||||
}
|
}
|
||||||
|
|
||||||
StringVal::StringVal(BroString* s) : Val(s, TYPE_STRING)
|
StringVal::StringVal(String* s) : Val(s, TYPE_STRING)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
// The following adds a NUL at the end.
|
// The following adds a NUL at the end.
|
||||||
StringVal::StringVal(int length, const char* s)
|
StringVal::StringVal(int length, const char* s)
|
||||||
: StringVal(new BroString(reinterpret_cast<const u_char*>(s), length, true))
|
: StringVal(new String(reinterpret_cast<const u_char*>(s), length, true))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
StringVal::StringVal(const char* s) : StringVal(new BroString(s))
|
StringVal::StringVal(const char* s) : StringVal(new String(s))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1036,7 +1036,7 @@ unsigned int StringVal::MemoryAllocation() const
|
||||||
}
|
}
|
||||||
|
|
||||||
StringValPtr StringVal::Replace(
|
StringValPtr StringVal::Replace(
|
||||||
RE_Matcher* re, const BroString& repl, bool do_all)
|
RE_Matcher* re, const String& repl, bool do_all)
|
||||||
{
|
{
|
||||||
const u_char* s = Bytes();
|
const u_char* s = Bytes();
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
|
@ -1117,7 +1117,7 @@ StringValPtr StringVal::Replace(
|
||||||
// the NUL.
|
// the NUL.
|
||||||
r[0] = '\0';
|
r[0] = '\0';
|
||||||
|
|
||||||
return make_intrusive<zeek::StringVal>(new BroString(true, result, r - result));
|
return make_intrusive<zeek::StringVal>(new String(true, result, r - result));
|
||||||
}
|
}
|
||||||
|
|
||||||
ValPtr StringVal::DoClone(CloneState* state)
|
ValPtr StringVal::DoClone(CloneState* state)
|
||||||
|
@ -1126,8 +1126,8 @@ ValPtr StringVal::DoClone(CloneState* state)
|
||||||
// instead of creating a new copy, but we first need to be careful and
|
// instead of creating a new copy, but we first need to be careful and
|
||||||
// audit whether anything internal actually does mutate it.
|
// audit whether anything internal actually does mutate it.
|
||||||
return state->NewClone(this, make_intrusive<zeek::StringVal>(
|
return state->NewClone(this, make_intrusive<zeek::StringVal>(
|
||||||
new BroString((u_char*) val.string_val->Bytes(),
|
new String((u_char*) val.string_val->Bytes(),
|
||||||
val.string_val->Len(), true)));
|
val.string_val->Len(), true)));
|
||||||
}
|
}
|
||||||
|
|
||||||
PatternVal::PatternVal(RE_Matcher* re)
|
PatternVal::PatternVal(RE_Matcher* re)
|
||||||
|
|
17
src/Val.h
17
src/Val.h
|
@ -27,11 +27,12 @@
|
||||||
|
|
||||||
namespace zeek {
|
namespace zeek {
|
||||||
template<typename T> class PDict;
|
template<typename T> class PDict;
|
||||||
|
class String;
|
||||||
};
|
};
|
||||||
template<typename T> using PDict [[deprecated("Remove in v4.1. Use zeek::PDict instead.")]] = zeek::PDict<T>;
|
template<typename T> using PDict [[deprecated("Remove in v4.1. Use zeek::PDict instead.")]] = zeek::PDict<T>;
|
||||||
|
using BroString [[deprecated("Remove in v4.1. Use zeek::String instead.")]] = zeek::String;
|
||||||
|
|
||||||
ZEEK_FORWARD_DECLARE_NAMESPACED(IterCookie, zeek);
|
ZEEK_FORWARD_DECLARE_NAMESPACED(IterCookie, zeek);
|
||||||
ZEEK_FORWARD_DECLARE_NAMESPACED(BroString, zeek);
|
|
||||||
ZEEK_FORWARD_DECLARE_NAMESPACED(Frame, zeek::detail);
|
ZEEK_FORWARD_DECLARE_NAMESPACED(Frame, zeek::detail);
|
||||||
ZEEK_FORWARD_DECLARE_NAMESPACED(Func, zeek);
|
ZEEK_FORWARD_DECLARE_NAMESPACED(Func, zeek);
|
||||||
|
|
||||||
|
@ -96,7 +97,7 @@ union BroValUnion {
|
||||||
// Used for double, time, interval.
|
// Used for double, time, interval.
|
||||||
double double_val;
|
double double_val;
|
||||||
|
|
||||||
BroString* string_val;
|
String* string_val;
|
||||||
zeek::Func* func_val;
|
zeek::Func* func_val;
|
||||||
BroFile* file_val;
|
BroFile* file_val;
|
||||||
RE_Matcher* re_val;
|
RE_Matcher* re_val;
|
||||||
|
@ -121,7 +122,7 @@ union BroValUnion {
|
||||||
constexpr BroValUnion(double value) noexcept
|
constexpr BroValUnion(double value) noexcept
|
||||||
: double_val(value) {}
|
: double_val(value) {}
|
||||||
|
|
||||||
constexpr BroValUnion(BroString* value) noexcept
|
constexpr BroValUnion(String* value) noexcept
|
||||||
: string_val(value) {}
|
: string_val(value) {}
|
||||||
|
|
||||||
constexpr BroValUnion(zeek::Func* value) noexcept
|
constexpr BroValUnion(zeek::Func* value) noexcept
|
||||||
|
@ -236,7 +237,7 @@ public:
|
||||||
CONST_ACCESSOR2(zeek::TYPE_TIME, double, double_val, AsTime)
|
CONST_ACCESSOR2(zeek::TYPE_TIME, double, double_val, AsTime)
|
||||||
CONST_ACCESSOR2(zeek::TYPE_INTERVAL, double, double_val, AsInterval)
|
CONST_ACCESSOR2(zeek::TYPE_INTERVAL, double, double_val, AsInterval)
|
||||||
CONST_ACCESSOR2(zeek::TYPE_ENUM, int, int_val, AsEnum)
|
CONST_ACCESSOR2(zeek::TYPE_ENUM, int, int_val, AsEnum)
|
||||||
CONST_ACCESSOR(zeek::TYPE_STRING, BroString*, string_val, AsString)
|
CONST_ACCESSOR(zeek::TYPE_STRING, String*, string_val, AsString)
|
||||||
CONST_ACCESSOR(zeek::TYPE_FUNC, zeek::Func*, func_val, AsFunc)
|
CONST_ACCESSOR(zeek::TYPE_FUNC, zeek::Func*, func_val, AsFunc)
|
||||||
CONST_ACCESSOR(zeek::TYPE_TABLE, zeek::PDict<TableEntryVal>*, table_val, AsTable)
|
CONST_ACCESSOR(zeek::TYPE_TABLE, zeek::PDict<TableEntryVal>*, table_val, AsTable)
|
||||||
CONST_ACCESSOR(zeek::TYPE_RECORD, std::vector<ValPtr>*, record_val, AsRecord)
|
CONST_ACCESSOR(zeek::TYPE_RECORD, std::vector<ValPtr>*, record_val, AsRecord)
|
||||||
|
@ -272,7 +273,7 @@ public:
|
||||||
|
|
||||||
// Accessors for mutable values are called AsNonConst* and
|
// Accessors for mutable values are called AsNonConst* and
|
||||||
// are protected to avoid external state changes.
|
// are protected to avoid external state changes.
|
||||||
// ACCESSOR(zeek::TYPE_STRING, BroString*, string_val, AsString)
|
// ACCESSOR(zeek::TYPE_STRING, String*, string_val, AsString)
|
||||||
ACCESSOR(zeek::TYPE_FUNC, zeek::Func*, func_val, AsFunc)
|
ACCESSOR(zeek::TYPE_FUNC, zeek::Func*, func_val, AsFunc)
|
||||||
ACCESSOR(zeek::TYPE_FILE, BroFile*, file_val, AsFile)
|
ACCESSOR(zeek::TYPE_FILE, BroFile*, file_val, AsFile)
|
||||||
ACCESSOR(zeek::TYPE_PATTERN, RE_Matcher*, re_val, AsPattern)
|
ACCESSOR(zeek::TYPE_PATTERN, RE_Matcher*, re_val, AsPattern)
|
||||||
|
@ -615,7 +616,7 @@ protected:
|
||||||
|
|
||||||
class StringVal final : public Val {
|
class StringVal final : public Val {
|
||||||
public:
|
public:
|
||||||
explicit StringVal(BroString* s);
|
explicit StringVal(String* s);
|
||||||
explicit StringVal(const char* s);
|
explicit StringVal(const char* s);
|
||||||
explicit StringVal(const std::string& s);
|
explicit StringVal(const std::string& s);
|
||||||
StringVal(int length, const char* s);
|
StringVal(int length, const char* s);
|
||||||
|
@ -628,7 +629,7 @@ public:
|
||||||
|
|
||||||
// Note that one needs to de-allocate the return value of
|
// Note that one needs to de-allocate the return value of
|
||||||
// ExpandedString() to avoid a memory leak.
|
// ExpandedString() to avoid a memory leak.
|
||||||
// char* ExpandedString(int format = BroString::EXPANDED_STRING)
|
// char* ExpandedString(int format = String::EXPANDED_STRING)
|
||||||
// { return AsString()->ExpandedString(format); }
|
// { return AsString()->ExpandedString(format); }
|
||||||
|
|
||||||
std::string ToStdString() const;
|
std::string ToStdString() const;
|
||||||
|
@ -636,7 +637,7 @@ public:
|
||||||
|
|
||||||
unsigned int MemoryAllocation() const override;
|
unsigned int MemoryAllocation() const override;
|
||||||
|
|
||||||
StringValPtr Replace(RE_Matcher* re, const BroString& repl,
|
StringValPtr Replace(RE_Matcher* re, const String& repl,
|
||||||
bool do_all);
|
bool do_all);
|
||||||
|
|
||||||
[[deprecated("Remove in v4.1. Use Replace().")]]
|
[[deprecated("Remove in v4.1. Use Replace().")]]
|
||||||
|
|
|
@ -941,7 +941,7 @@ void TransportLayerAnalyzer::PacketContents(const u_char* data, int len)
|
||||||
{
|
{
|
||||||
if ( packet_contents && len > 0 )
|
if ( packet_contents && len > 0 )
|
||||||
{
|
{
|
||||||
zeek::BroString* cbs = new zeek::BroString(data, len, true);
|
zeek::String* cbs = new zeek::String(data, len, true);
|
||||||
auto contents = zeek::make_intrusive<zeek::StringVal>(cbs);
|
auto contents = zeek::make_intrusive<zeek::StringVal>(cbs);
|
||||||
EnqueueConnEvent(packet_contents, ConnVal(), std::move(contents));
|
EnqueueConnEvent(packet_contents, ConnVal(), std::move(contents));
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,14 +196,14 @@ bool DNS_Interpreter::ParseQuestion(DNS_MsgInfo* msg,
|
||||||
|
|
||||||
if ( dns_event && ! msg->skip_event )
|
if ( dns_event && ! msg->skip_event )
|
||||||
{
|
{
|
||||||
zeek::BroString* original_name = new zeek::BroString(name, name_end - name, true);
|
zeek::String* original_name = new zeek::String(name, name_end - name, true);
|
||||||
|
|
||||||
// Downcase the Name to normalize it
|
// Downcase the Name to normalize it
|
||||||
for ( u_char* np = name; np < name_end; ++np )
|
for ( u_char* np = name; np < name_end; ++np )
|
||||||
if ( isupper(*np) )
|
if ( isupper(*np) )
|
||||||
*np = tolower(*np);
|
*np = tolower(*np);
|
||||||
|
|
||||||
zeek::BroString* question_name = new zeek::BroString(name, name_end - name, true);
|
zeek::String* question_name = new zeek::String(name, name_end - name, true);
|
||||||
|
|
||||||
SendReplyOrRejectEvent(msg, dns_event, data, len, question_name, original_name);
|
SendReplyOrRejectEvent(msg, dns_event, data, len, question_name, original_name);
|
||||||
}
|
}
|
||||||
|
@ -238,7 +238,7 @@ bool DNS_Interpreter::ParseAnswer(DNS_MsgInfo* msg,
|
||||||
// Note that the exact meaning of some of these fields will be
|
// Note that the exact meaning of some of these fields will be
|
||||||
// re-interpreted by other, more adventurous RR types.
|
// re-interpreted by other, more adventurous RR types.
|
||||||
|
|
||||||
msg->query_name = zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(name, name_end - name, true));
|
msg->query_name = zeek::make_intrusive<zeek::StringVal>(new zeek::String(name, name_end - name, true));
|
||||||
msg->atype = RR_Type(ExtractShort(data, len));
|
msg->atype = RR_Type(ExtractShort(data, len));
|
||||||
msg->aclass = ExtractShort(data, len);
|
msg->aclass = ExtractShort(data, len);
|
||||||
msg->ttl = ExtractLong(data, len);
|
msg->ttl = ExtractLong(data, len);
|
||||||
|
@ -562,7 +562,7 @@ bool DNS_Interpreter::ParseRR_Name(DNS_MsgInfo* msg,
|
||||||
analyzer->ConnVal(),
|
analyzer->ConnVal(),
|
||||||
msg->BuildHdrVal(),
|
msg->BuildHdrVal(),
|
||||||
msg->BuildAnswerVal(),
|
msg->BuildAnswerVal(),
|
||||||
zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(name, name_end - name, true))
|
zeek::make_intrusive<zeek::StringVal>(new zeek::String(name, name_end - name, true))
|
||||||
);
|
);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -604,8 +604,8 @@ bool DNS_Interpreter::ParseRR_SOA(DNS_MsgInfo* msg,
|
||||||
{
|
{
|
||||||
static auto dns_soa = zeek::id::find_type<zeek::RecordType>("dns_soa");
|
static auto dns_soa = zeek::id::find_type<zeek::RecordType>("dns_soa");
|
||||||
auto r = zeek::make_intrusive<zeek::RecordVal>(dns_soa);
|
auto r = zeek::make_intrusive<zeek::RecordVal>(dns_soa);
|
||||||
r->Assign(0, zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(mname, mname_end - mname, true)));
|
r->Assign(0, zeek::make_intrusive<zeek::StringVal>(new zeek::String(mname, mname_end - mname, true)));
|
||||||
r->Assign(1, zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(rname, rname_end - rname, true)));
|
r->Assign(1, zeek::make_intrusive<zeek::StringVal>(new zeek::String(rname, rname_end - rname, true)));
|
||||||
r->Assign(2, zeek::val_mgr->Count(serial));
|
r->Assign(2, zeek::val_mgr->Count(serial));
|
||||||
r->Assign(3, zeek::make_intrusive<zeek::IntervalVal>(double(refresh), Seconds));
|
r->Assign(3, zeek::make_intrusive<zeek::IntervalVal>(double(refresh), Seconds));
|
||||||
r->Assign(4, zeek::make_intrusive<zeek::IntervalVal>(double(retry), Seconds));
|
r->Assign(4, zeek::make_intrusive<zeek::IntervalVal>(double(retry), Seconds));
|
||||||
|
@ -646,7 +646,7 @@ bool DNS_Interpreter::ParseRR_MX(DNS_MsgInfo* msg,
|
||||||
analyzer->ConnVal(),
|
analyzer->ConnVal(),
|
||||||
msg->BuildHdrVal(),
|
msg->BuildHdrVal(),
|
||||||
msg->BuildAnswerVal(),
|
msg->BuildAnswerVal(),
|
||||||
zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(name, name_end - name, true)),
|
zeek::make_intrusive<zeek::StringVal>(new zeek::String(name, name_end - name, true)),
|
||||||
zeek::val_mgr->Count(preference)
|
zeek::val_mgr->Count(preference)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -687,7 +687,7 @@ bool DNS_Interpreter::ParseRR_SRV(DNS_MsgInfo* msg,
|
||||||
analyzer->ConnVal(),
|
analyzer->ConnVal(),
|
||||||
msg->BuildHdrVal(),
|
msg->BuildHdrVal(),
|
||||||
msg->BuildAnswerVal(),
|
msg->BuildAnswerVal(),
|
||||||
zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(name, name_end - name, true)),
|
zeek::make_intrusive<zeek::StringVal>(new zeek::String(name, name_end - name, true)),
|
||||||
zeek::val_mgr->Count(priority),
|
zeek::val_mgr->Count(priority),
|
||||||
zeek::val_mgr->Count(weight),
|
zeek::val_mgr->Count(weight),
|
||||||
zeek::val_mgr->Count(port)
|
zeek::val_mgr->Count(port)
|
||||||
|
@ -723,23 +723,23 @@ bool DNS_Interpreter::ParseRR_EDNS(DNS_MsgInfo* msg,
|
||||||
}
|
}
|
||||||
|
|
||||||
void DNS_Interpreter::ExtractOctets(const u_char*& data, int& len,
|
void DNS_Interpreter::ExtractOctets(const u_char*& data, int& len,
|
||||||
zeek::BroString** p)
|
zeek::String** p)
|
||||||
{
|
{
|
||||||
uint16_t dlen = ExtractShort(data, len);
|
uint16_t dlen = ExtractShort(data, len);
|
||||||
dlen = min(len, static_cast<int>(dlen));
|
dlen = min(len, static_cast<int>(dlen));
|
||||||
|
|
||||||
if ( p )
|
if ( p )
|
||||||
*p = new zeek::BroString(data, dlen, false);
|
*p = new zeek::String(data, dlen, false);
|
||||||
|
|
||||||
data += dlen;
|
data += dlen;
|
||||||
len -= dlen;
|
len -= dlen;
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::BroString* DNS_Interpreter::ExtractStream(const u_char*& data, int& len, int l)
|
zeek::String* DNS_Interpreter::ExtractStream(const u_char*& data, int& len, int l)
|
||||||
{
|
{
|
||||||
l = max(l, 0);
|
l = max(l, 0);
|
||||||
int dlen = min(len, l); // Len in bytes of the algorithm use
|
int dlen = min(len, l); // Len in bytes of the algorithm use
|
||||||
auto rval = new zeek::BroString(data, dlen, false);
|
auto rval = new zeek::String(data, dlen, false);
|
||||||
|
|
||||||
data += dlen;
|
data += dlen;
|
||||||
len -= dlen;
|
len -= dlen;
|
||||||
|
@ -763,7 +763,7 @@ bool DNS_Interpreter::ParseRR_TSIG(DNS_MsgInfo* msg,
|
||||||
uint32_t sign_time_sec = ExtractLong(data, len);
|
uint32_t sign_time_sec = ExtractLong(data, len);
|
||||||
unsigned int sign_time_msec = ExtractShort(data, len);
|
unsigned int sign_time_msec = ExtractShort(data, len);
|
||||||
unsigned int fudge = ExtractShort(data, len);
|
unsigned int fudge = ExtractShort(data, len);
|
||||||
zeek::BroString* request_MAC;
|
zeek::String* request_MAC;
|
||||||
ExtractOctets(data, len, dns_TSIG_addl ? &request_MAC : nullptr);
|
ExtractOctets(data, len, dns_TSIG_addl ? &request_MAC : nullptr);
|
||||||
unsigned int orig_id = ExtractShort(data, len);
|
unsigned int orig_id = ExtractShort(data, len);
|
||||||
unsigned int rr_error = ExtractShort(data, len);
|
unsigned int rr_error = ExtractShort(data, len);
|
||||||
|
@ -773,7 +773,7 @@ bool DNS_Interpreter::ParseRR_TSIG(DNS_MsgInfo* msg,
|
||||||
{
|
{
|
||||||
TSIG_DATA tsig;
|
TSIG_DATA tsig;
|
||||||
tsig.alg_name =
|
tsig.alg_name =
|
||||||
new zeek::BroString(alg_name, alg_name_end - alg_name, true);
|
new zeek::String(alg_name, alg_name_end - alg_name, true);
|
||||||
tsig.sig = request_MAC;
|
tsig.sig = request_MAC;
|
||||||
tsig.time_s = sign_time_sec;
|
tsig.time_s = sign_time_sec;
|
||||||
tsig.time_ms = sign_time_msec;
|
tsig.time_ms = sign_time_msec;
|
||||||
|
@ -827,7 +827,7 @@ bool DNS_Interpreter::ParseRR_RRSIG(DNS_MsgInfo* msg,
|
||||||
|
|
||||||
int sig_len = rdlength - ((data - data_start) + 18);
|
int sig_len = rdlength - ((data - data_start) + 18);
|
||||||
DNSSEC_Algo dsa = DNSSEC_Algo(algo);
|
DNSSEC_Algo dsa = DNSSEC_Algo(algo);
|
||||||
zeek::BroString* sign = ExtractStream(data, len, sig_len);
|
zeek::String* sign = ExtractStream(data, len, sig_len);
|
||||||
|
|
||||||
switch ( dsa ) {
|
switch ( dsa ) {
|
||||||
case RSA_MD5:
|
case RSA_MD5:
|
||||||
|
@ -879,7 +879,7 @@ bool DNS_Interpreter::ParseRR_RRSIG(DNS_MsgInfo* msg,
|
||||||
rrsig.sig_exp = sign_exp;
|
rrsig.sig_exp = sign_exp;
|
||||||
rrsig.sig_incep = sign_incp;
|
rrsig.sig_incep = sign_incp;
|
||||||
rrsig.key_tag = key_tag;
|
rrsig.key_tag = key_tag;
|
||||||
rrsig.signer_name = new zeek::BroString(name, name_end - name, true);
|
rrsig.signer_name = new zeek::String(name, name_end - name, true);
|
||||||
rrsig.signature = sign;
|
rrsig.signature = sign;
|
||||||
|
|
||||||
analyzer->EnqueueConnEvent(dns_RRSIG,
|
analyzer->EnqueueConnEvent(dns_RRSIG,
|
||||||
|
@ -914,7 +914,7 @@ bool DNS_Interpreter::ParseRR_DNSKEY(DNS_MsgInfo* msg,
|
||||||
unsigned int dalgorithm = proto_algo & 0xff;
|
unsigned int dalgorithm = proto_algo & 0xff;
|
||||||
DNSSEC_Algo dsa = DNSSEC_Algo(dalgorithm);
|
DNSSEC_Algo dsa = DNSSEC_Algo(dalgorithm);
|
||||||
//Evaluating the size of remaining bytes for Public Key
|
//Evaluating the size of remaining bytes for Public Key
|
||||||
zeek::BroString* key = ExtractStream(data, len, rdlength - 4);
|
zeek::String* key = ExtractStream(data, len, rdlength - 4);
|
||||||
|
|
||||||
// flags bit 7: zone key
|
// flags bit 7: zone key
|
||||||
// flags bit 8: revoked
|
// flags bit 8: revoked
|
||||||
|
@ -1023,7 +1023,7 @@ bool DNS_Interpreter::ParseRR_NSEC(DNS_MsgInfo* msg,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::BroString* bitmap = ExtractStream(data, len, bmlen);
|
zeek::String* bitmap = ExtractStream(data, len, bmlen);
|
||||||
char_strings->Assign(char_strings->Size(), zeek::make_intrusive<zeek::StringVal>(bitmap));
|
char_strings->Assign(char_strings->Size(), zeek::make_intrusive<zeek::StringVal>(bitmap));
|
||||||
typebitmaps_len = typebitmaps_len - (2 + bmlen);
|
typebitmaps_len = typebitmaps_len - (2 + bmlen);
|
||||||
}
|
}
|
||||||
|
@ -1033,7 +1033,7 @@ bool DNS_Interpreter::ParseRR_NSEC(DNS_MsgInfo* msg,
|
||||||
analyzer->ConnVal(),
|
analyzer->ConnVal(),
|
||||||
msg->BuildHdrVal(),
|
msg->BuildHdrVal(),
|
||||||
msg->BuildAnswerVal(),
|
msg->BuildAnswerVal(),
|
||||||
zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(name, name_end - name, true)),
|
zeek::make_intrusive<zeek::StringVal>(new zeek::String(name, name_end - name, true)),
|
||||||
std::move(char_strings)
|
std::move(char_strings)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1098,7 +1098,7 @@ bool DNS_Interpreter::ParseRR_NSEC3(DNS_MsgInfo* msg,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::BroString* bitmap = ExtractStream(data, len, bmlen);
|
zeek::String* bitmap = ExtractStream(data, len, bmlen);
|
||||||
char_strings->Assign(char_strings->Size(), zeek::make_intrusive<zeek::StringVal>(bitmap));
|
char_strings->Assign(char_strings->Size(), zeek::make_intrusive<zeek::StringVal>(bitmap));
|
||||||
typebitmaps_len = typebitmaps_len - (2 + bmlen);
|
typebitmaps_len = typebitmaps_len - (2 + bmlen);
|
||||||
}
|
}
|
||||||
|
@ -1146,7 +1146,7 @@ bool DNS_Interpreter::ParseRR_DS(DNS_MsgInfo* msg,
|
||||||
unsigned int ds_algo = (ds_algo_dtype >> 8) & 0xff;
|
unsigned int ds_algo = (ds_algo_dtype >> 8) & 0xff;
|
||||||
unsigned int ds_dtype = ds_algo_dtype & 0xff;
|
unsigned int ds_dtype = ds_algo_dtype & 0xff;
|
||||||
DNSSEC_Digest ds_digest_type = DNSSEC_Digest(ds_dtype);
|
DNSSEC_Digest ds_digest_type = DNSSEC_Digest(ds_dtype);
|
||||||
zeek::BroString* ds_digest = ExtractStream(data, len, rdlength - 4);
|
zeek::String* ds_digest = ExtractStream(data, len, rdlength - 4);
|
||||||
|
|
||||||
switch ( ds_digest_type ) {
|
switch ( ds_digest_type ) {
|
||||||
case SHA1:
|
case SHA1:
|
||||||
|
@ -1364,11 +1364,11 @@ bool DNS_Interpreter::ParseRR_CAA(DNS_MsgInfo* msg,
|
||||||
analyzer->Weird("DNS_CAA_char_str_past_rdlen");
|
analyzer->Weird("DNS_CAA_char_str_past_rdlen");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
zeek::BroString* tag = new zeek::BroString(data, tagLen, true);
|
zeek::String* tag = new zeek::String(data, tagLen, true);
|
||||||
len -= tagLen;
|
len -= tagLen;
|
||||||
data += tagLen;
|
data += tagLen;
|
||||||
rdlength -= tagLen;
|
rdlength -= tagLen;
|
||||||
zeek::BroString* value = new zeek::BroString(data, rdlength, false);
|
zeek::String* value = new zeek::String(data, rdlength, false);
|
||||||
|
|
||||||
len -= value->Len();
|
len -= value->Len();
|
||||||
data += value->Len();
|
data += value->Len();
|
||||||
|
@ -1396,8 +1396,8 @@ bool DNS_Interpreter::ParseRR_CAA(DNS_MsgInfo* msg,
|
||||||
void DNS_Interpreter::SendReplyOrRejectEvent(DNS_MsgInfo* msg,
|
void DNS_Interpreter::SendReplyOrRejectEvent(DNS_MsgInfo* msg,
|
||||||
EventHandlerPtr event,
|
EventHandlerPtr event,
|
||||||
const u_char*& data, int& len,
|
const u_char*& data, int& len,
|
||||||
zeek::BroString* question_name,
|
zeek::String* question_name,
|
||||||
zeek::BroString* original_name)
|
zeek::String* original_name)
|
||||||
{
|
{
|
||||||
RR_Type qtype = RR_Type(ExtractShort(data, len));
|
RR_Type qtype = RR_Type(ExtractShort(data, len));
|
||||||
int qclass = ExtractShort(data, len);
|
int qclass = ExtractShort(data, len);
|
||||||
|
|
|
@ -129,10 +129,10 @@ struct EDNS_ADDITIONAL { // size
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TSIG_DATA {
|
struct TSIG_DATA {
|
||||||
zeek::BroString* alg_name;
|
zeek::String* alg_name;
|
||||||
unsigned long time_s;
|
unsigned long time_s;
|
||||||
unsigned short time_ms;
|
unsigned short time_ms;
|
||||||
zeek::BroString* sig;
|
zeek::String* sig;
|
||||||
unsigned short fudge;
|
unsigned short fudge;
|
||||||
unsigned short orig_id;
|
unsigned short orig_id;
|
||||||
unsigned short rr_error;
|
unsigned short rr_error;
|
||||||
|
@ -146,15 +146,15 @@ struct RRSIG_DATA {
|
||||||
unsigned long sig_exp; // 32
|
unsigned long sig_exp; // 32
|
||||||
unsigned long sig_incep; // 32
|
unsigned long sig_incep; // 32
|
||||||
unsigned short key_tag; //16
|
unsigned short key_tag; //16
|
||||||
zeek::BroString* signer_name;
|
zeek::String* signer_name;
|
||||||
zeek::BroString* signature;
|
zeek::String* signature;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DNSKEY_DATA {
|
struct DNSKEY_DATA {
|
||||||
unsigned short dflags; // 16 : ExtractShort(data, len)
|
unsigned short dflags; // 16 : ExtractShort(data, len)
|
||||||
unsigned short dalgorithm; // 8
|
unsigned short dalgorithm; // 8
|
||||||
unsigned short dprotocol; // 8
|
unsigned short dprotocol; // 8
|
||||||
zeek::BroString* public_key; // Variable lenght Public Key
|
zeek::String* public_key; // Variable lenght Public Key
|
||||||
};
|
};
|
||||||
|
|
||||||
struct NSEC3_DATA {
|
struct NSEC3_DATA {
|
||||||
|
@ -162,9 +162,9 @@ struct NSEC3_DATA {
|
||||||
unsigned short nsec_hash_algo;
|
unsigned short nsec_hash_algo;
|
||||||
unsigned short nsec_iter;
|
unsigned short nsec_iter;
|
||||||
unsigned short nsec_salt_len;
|
unsigned short nsec_salt_len;
|
||||||
zeek::BroString* nsec_salt;
|
zeek::String* nsec_salt;
|
||||||
unsigned short nsec_hlen;
|
unsigned short nsec_hlen;
|
||||||
zeek::BroString* nsec_hash;
|
zeek::String* nsec_hash;
|
||||||
zeek::VectorValPtr bitmaps;
|
zeek::VectorValPtr bitmaps;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -172,7 +172,7 @@ struct DS_DATA {
|
||||||
unsigned short key_tag; // 16 : ExtractShort(data, len)
|
unsigned short key_tag; // 16 : ExtractShort(data, len)
|
||||||
unsigned short algorithm; // 8
|
unsigned short algorithm; // 8
|
||||||
unsigned short digest_type; // 8
|
unsigned short digest_type; // 8
|
||||||
zeek::BroString* digest_val; // Variable lenght Digest of DNSKEY RR
|
zeek::String* digest_val; // Variable lenght Digest of DNSKEY RR
|
||||||
};
|
};
|
||||||
|
|
||||||
class DNS_MsgInfo {
|
class DNS_MsgInfo {
|
||||||
|
@ -249,9 +249,9 @@ protected:
|
||||||
|
|
||||||
uint16_t ExtractShort(const u_char*& data, int& len);
|
uint16_t ExtractShort(const u_char*& data, int& len);
|
||||||
uint32_t ExtractLong(const u_char*& data, int& len);
|
uint32_t ExtractLong(const u_char*& data, int& len);
|
||||||
void ExtractOctets(const u_char*& data, int& len, zeek::BroString** p);
|
void ExtractOctets(const u_char*& data, int& len, zeek::String** p);
|
||||||
|
|
||||||
zeek::BroString* ExtractStream(const u_char*& data, int& len, int sig_len);
|
zeek::String* ExtractStream(const u_char*& data, int& len, int sig_len);
|
||||||
|
|
||||||
bool ParseRR_Name(DNS_MsgInfo* msg,
|
bool ParseRR_Name(DNS_MsgInfo* msg,
|
||||||
const u_char*& data, int& len, int rdlength,
|
const u_char*& data, int& len, int rdlength,
|
||||||
|
@ -308,8 +308,8 @@ protected:
|
||||||
const u_char* msg_start);
|
const u_char* msg_start);
|
||||||
void SendReplyOrRejectEvent(DNS_MsgInfo* msg, EventHandlerPtr event,
|
void SendReplyOrRejectEvent(DNS_MsgInfo* msg, EventHandlerPtr event,
|
||||||
const u_char*& data, int& len,
|
const u_char*& data, int& len,
|
||||||
zeek::BroString* question_name,
|
zeek::String* question_name,
|
||||||
zeek::BroString* original_name);
|
zeek::String* original_name);
|
||||||
|
|
||||||
analyzer::Analyzer* analyzer;
|
analyzer::Analyzer* analyzer;
|
||||||
bool first_message;
|
bool first_message;
|
||||||
|
|
|
@ -204,7 +204,7 @@ void FTP_ADAT_Analyzer::DeliverStream(int len, const u_char* data, bool orig)
|
||||||
const char* line = (const char*) data;
|
const char* line = (const char*) data;
|
||||||
const char* end_of_line = line + len;
|
const char* end_of_line = line + len;
|
||||||
|
|
||||||
zeek::BroString* decoded_adat = nullptr;
|
zeek::String* decoded_adat = nullptr;
|
||||||
|
|
||||||
if ( orig )
|
if ( orig )
|
||||||
{
|
{
|
||||||
|
|
|
@ -106,7 +106,7 @@ zeek::ValPtr BuildEndUserAddr(const InformationElement* ie)
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ev->Assign(3, zeek::make_intrusive<zeek::StringVal>(
|
ev->Assign(3, zeek::make_intrusive<zeek::StringVal>(
|
||||||
new zeek::BroString((const u_char*) d, len, false)));
|
new zeek::String((const u_char*) d, len, false)));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -116,7 +116,7 @@ zeek::ValPtr BuildEndUserAddr(const InformationElement* ie)
|
||||||
|
|
||||||
zeek::ValPtr BuildAccessPointName(const InformationElement* ie)
|
zeek::ValPtr BuildAccessPointName(const InformationElement* ie)
|
||||||
{
|
{
|
||||||
zeek::BroString* bs = new zeek::BroString((const u_char*) ie->ap_name()->value().data(),
|
zeek::String* bs = new zeek::String((const u_char*) ie->ap_name()->value().data(),
|
||||||
ie->ap_name()->value().length(), false);
|
ie->ap_name()->value().length(), false);
|
||||||
return zeek::make_intrusive<zeek::StringVal>(bs);
|
return zeek::make_intrusive<zeek::StringVal>(bs);
|
||||||
}
|
}
|
||||||
|
@ -125,7 +125,7 @@ zeek::ValPtr BuildProtoConfigOptions(const InformationElement* ie)
|
||||||
{
|
{
|
||||||
const u_char* d = (const u_char*) ie->proto_config_opts()->value().data();
|
const u_char* d = (const u_char*) ie->proto_config_opts()->value().data();
|
||||||
int len = ie->proto_config_opts()->value().length();
|
int len = ie->proto_config_opts()->value().length();
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(d, len, false));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(d, len, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::ValPtr BuildGSN_Addr(const InformationElement* ie)
|
zeek::ValPtr BuildGSN_Addr(const InformationElement* ie)
|
||||||
|
@ -142,7 +142,7 @@ zeek::ValPtr BuildGSN_Addr(const InformationElement* ie)
|
||||||
ev->Assign(0, zeek::make_intrusive<zeek::AddrVal>(
|
ev->Assign(0, zeek::make_intrusive<zeek::AddrVal>(
|
||||||
IPAddr(IPv6, (const uint32*) d, IPAddr::Network)));
|
IPAddr(IPv6, (const uint32*) d, IPAddr::Network)));
|
||||||
else
|
else
|
||||||
ev->Assign(1, zeek::make_intrusive<zeek::StringVal>(new zeek::BroString((const u_char*) d, len, false)));
|
ev->Assign(1, zeek::make_intrusive<zeek::StringVal>(new zeek::String((const u_char*) d, len, false)));
|
||||||
|
|
||||||
return ev;
|
return ev;
|
||||||
}
|
}
|
||||||
|
@ -151,7 +151,7 @@ zeek::ValPtr BuildMSISDN(const InformationElement* ie)
|
||||||
{
|
{
|
||||||
const u_char* d = (const u_char*) ie->msisdn()->value().data();
|
const u_char* d = (const u_char*) ie->msisdn()->value().data();
|
||||||
int len = ie->msisdn()->value().length();
|
int len = ie->msisdn()->value().length();
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(d, len, false));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(d, len, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::ValPtr BuildQoS_Profile(const InformationElement* ie)
|
zeek::ValPtr BuildQoS_Profile(const InformationElement* ie)
|
||||||
|
@ -162,7 +162,7 @@ zeek::ValPtr BuildQoS_Profile(const InformationElement* ie)
|
||||||
int len = ie->qos_profile()->data().length();
|
int len = ie->qos_profile()->data().length();
|
||||||
|
|
||||||
ev->Assign(0, zeek::val_mgr->Count(ie->qos_profile()->alloc_retention_priority()));
|
ev->Assign(0, zeek::val_mgr->Count(ie->qos_profile()->alloc_retention_priority()));
|
||||||
ev->Assign(1, zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(d, len, false)));
|
ev->Assign(1, zeek::make_intrusive<zeek::StringVal>(new zeek::String(d, len, false)));
|
||||||
|
|
||||||
return ev;
|
return ev;
|
||||||
}
|
}
|
||||||
|
@ -171,21 +171,21 @@ zeek::ValPtr BuildTrafficFlowTemplate(const InformationElement* ie)
|
||||||
{
|
{
|
||||||
const uint8* d = ie->traffic_flow_template()->value().data();
|
const uint8* d = ie->traffic_flow_template()->value().data();
|
||||||
int len = ie->traffic_flow_template()->value().length();
|
int len = ie->traffic_flow_template()->value().length();
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString((const u_char*) d, len, false));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String((const u_char*) d, len, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::ValPtr BuildTriggerID(const InformationElement* ie)
|
zeek::ValPtr BuildTriggerID(const InformationElement* ie)
|
||||||
{
|
{
|
||||||
const uint8* d = ie->trigger_id()->value().data();
|
const uint8* d = ie->trigger_id()->value().data();
|
||||||
int len = ie->trigger_id()->value().length();
|
int len = ie->trigger_id()->value().length();
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString((const u_char*) d, len, false));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String((const u_char*) d, len, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::ValPtr BuildOMC_ID(const InformationElement* ie)
|
zeek::ValPtr BuildOMC_ID(const InformationElement* ie)
|
||||||
{
|
{
|
||||||
const uint8* d = ie->omc_id()->value().data();
|
const uint8* d = ie->omc_id()->value().data();
|
||||||
int len = ie->omc_id()->value().length();
|
int len = ie->omc_id()->value().length();
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString((const u_char*) d, len, false));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String((const u_char*) d, len, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::ValPtr BuildPrivateExt(const InformationElement* ie)
|
zeek::ValPtr BuildPrivateExt(const InformationElement* ie)
|
||||||
|
@ -196,7 +196,7 @@ zeek::ValPtr BuildPrivateExt(const InformationElement* ie)
|
||||||
int len = ie->private_ext()->value().length();
|
int len = ie->private_ext()->value().length();
|
||||||
|
|
||||||
ev->Assign(0, zeek::val_mgr->Count(ie->private_ext()->id()));
|
ev->Assign(0, zeek::val_mgr->Count(ie->private_ext()->id()));
|
||||||
ev->Assign(1, zeek::make_intrusive<zeek::StringVal>(new zeek::BroString((const u_char*) d, len, false)));
|
ev->Assign(1, zeek::make_intrusive<zeek::StringVal>(new zeek::String((const u_char*) d, len, false)));
|
||||||
|
|
||||||
return ev;
|
return ev;
|
||||||
}
|
}
|
||||||
|
|
|
@ -762,7 +762,7 @@ void HTTP_Message::SubmitData(int len, const char* buf)
|
||||||
{
|
{
|
||||||
if ( http_entity_data )
|
if ( http_entity_data )
|
||||||
MyHTTP_Analyzer()->HTTP_EntityData(is_orig,
|
MyHTTP_Analyzer()->HTTP_EntityData(is_orig,
|
||||||
new zeek::BroString(reinterpret_cast<const u_char*>(buf), len, false));
|
new zeek::String(reinterpret_cast<const u_char*>(buf), len, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HTTP_Message::RequestBuffer(int* plen, char** pbuf)
|
bool HTTP_Message::RequestBuffer(int* plen, char** pbuf)
|
||||||
|
@ -1368,14 +1368,14 @@ void HTTP_Analyzer::HTTP_Event(const char* category, zeek::StringValPtr detail)
|
||||||
zeek::StringValPtr
|
zeek::StringValPtr
|
||||||
HTTP_Analyzer::TruncateURI(const zeek::StringValPtr& uri)
|
HTTP_Analyzer::TruncateURI(const zeek::StringValPtr& uri)
|
||||||
{
|
{
|
||||||
const zeek::BroString* str = uri->AsString();
|
const zeek::String* str = uri->AsString();
|
||||||
|
|
||||||
if ( truncate_http_URI >= 0 && str->Len() > truncate_http_URI )
|
if ( truncate_http_URI >= 0 && str->Len() > truncate_http_URI )
|
||||||
{
|
{
|
||||||
u_char* s = new u_char[truncate_http_URI + 4];
|
u_char* s = new u_char[truncate_http_URI + 4];
|
||||||
memcpy(s, str->Bytes(), truncate_http_URI);
|
memcpy(s, str->Bytes(), truncate_http_URI);
|
||||||
memcpy(s + truncate_http_URI, "...", 4);
|
memcpy(s + truncate_http_URI, "...", 4);
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(true, s, truncate_http_URI+3));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(true, s, truncate_http_URI+3));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return uri;
|
return uri;
|
||||||
|
@ -1495,7 +1495,7 @@ void HTTP_Analyzer::RequestClash(zeek::Val* /* clash_val */)
|
||||||
RequestMade(true, "request clash");
|
RequestMade(true, "request clash");
|
||||||
}
|
}
|
||||||
|
|
||||||
const zeek::BroString* HTTP_Analyzer::UnansweredRequestMethod()
|
const zeek::String* HTTP_Analyzer::UnansweredRequestMethod()
|
||||||
{
|
{
|
||||||
return unanswered_requests.empty() ? nullptr : unanswered_requests.front()->AsString();
|
return unanswered_requests.empty() ? nullptr : unanswered_requests.front()->AsString();
|
||||||
}
|
}
|
||||||
|
@ -1579,7 +1579,7 @@ int HTTP_Analyzer::ExpectReplyMessageBody()
|
||||||
// MUST NOT include a message-body. All other responses do include a
|
// MUST NOT include a message-body. All other responses do include a
|
||||||
// message-body, although it MAY be of zero length.
|
// message-body, although it MAY be of zero length.
|
||||||
|
|
||||||
const zeek::BroString* method = UnansweredRequestMethod();
|
const zeek::String* method = UnansweredRequestMethod();
|
||||||
|
|
||||||
if ( method && strncasecmp((const char*) (method->Bytes()), "HEAD", method->Len()) == 0 )
|
if ( method && strncasecmp((const char*) (method->Bytes()), "HEAD", method->Len()) == 0 )
|
||||||
return HTTP_BODY_NOT_EXPECTED;
|
return HTTP_BODY_NOT_EXPECTED;
|
||||||
|
@ -1648,7 +1648,7 @@ void HTTP_Analyzer::HTTP_Header(bool is_orig, mime::MIME_Header* h)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HTTP_Analyzer::HTTP_EntityData(bool is_orig, zeek::BroString* entity_data)
|
void HTTP_Analyzer::HTTP_EntityData(bool is_orig, zeek::String* entity_data)
|
||||||
{
|
{
|
||||||
if ( http_entity_data )
|
if ( http_entity_data )
|
||||||
EnqueueConnEvent(http_entity_data,
|
EnqueueConnEvent(http_entity_data,
|
||||||
|
@ -1711,7 +1711,7 @@ void analyzer::http::escape_URI_char(unsigned char ch, unsigned char*& p)
|
||||||
*p++ = encode_hex(ch & 0xf);
|
*p++ = encode_hex(ch & 0xf);
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::BroString* analyzer::http::unescape_URI(const u_char* line, const u_char* line_end,
|
zeek::String* analyzer::http::unescape_URI(const u_char* line, const u_char* line_end,
|
||||||
analyzer::Analyzer* analyzer)
|
analyzer::Analyzer* analyzer)
|
||||||
{
|
{
|
||||||
zeek::byte_vec decoded_URI = new u_char[line_end - line + 1];
|
zeek::byte_vec decoded_URI = new u_char[line_end - line + 1];
|
||||||
|
@ -1807,5 +1807,5 @@ zeek::BroString* analyzer::http::unescape_URI(const u_char* line, const u_char*
|
||||||
|
|
||||||
URI_p[0] = 0;
|
URI_p[0] = 0;
|
||||||
|
|
||||||
return new zeek::BroString(true, decoded_URI, URI_p - decoded_URI);
|
return new zeek::String(true, decoded_URI, URI_p - decoded_URI);
|
||||||
}
|
}
|
||||||
|
|
|
@ -153,7 +153,7 @@ public:
|
||||||
HTTP_Analyzer(Connection* conn);
|
HTTP_Analyzer(Connection* conn);
|
||||||
|
|
||||||
void HTTP_Header(bool is_orig, mime::MIME_Header* h);
|
void HTTP_Header(bool is_orig, mime::MIME_Header* h);
|
||||||
void HTTP_EntityData(bool is_orig, zeek::BroString* entity_data);
|
void HTTP_EntityData(bool is_orig, zeek::String* entity_data);
|
||||||
void HTTP_MessageDone(bool is_orig, HTTP_Message* message);
|
void HTTP_MessageDone(bool is_orig, HTTP_Message* message);
|
||||||
void HTTP_Event(const char* category, const char* detail);
|
void HTTP_Event(const char* category, const char* detail);
|
||||||
void HTTP_Event(const char* category, zeek::StringValPtr detail);
|
void HTTP_Event(const char* category, zeek::StringValPtr detail);
|
||||||
|
@ -232,7 +232,7 @@ protected:
|
||||||
void ReplyMade(bool interrupted, const char* msg);
|
void ReplyMade(bool interrupted, const char* msg);
|
||||||
void RequestClash(zeek::Val* clash_val);
|
void RequestClash(zeek::Val* clash_val);
|
||||||
|
|
||||||
const zeek::BroString* UnansweredRequestMethod();
|
const zeek::String* UnansweredRequestMethod();
|
||||||
|
|
||||||
int HTTP_ReplyCode(const char* code_str);
|
int HTTP_ReplyCode(const char* code_str);
|
||||||
int ExpectReplyMessageBody();
|
int ExpectReplyMessageBody();
|
||||||
|
@ -281,7 +281,7 @@ protected:
|
||||||
extern bool is_reserved_URI_char(unsigned char ch);
|
extern bool is_reserved_URI_char(unsigned char ch);
|
||||||
extern bool is_unreserved_URI_char(unsigned char ch);
|
extern bool is_unreserved_URI_char(unsigned char ch);
|
||||||
extern void escape_URI_char(unsigned char ch, unsigned char*& p);
|
extern void escape_URI_char(unsigned char ch, unsigned char*& p);
|
||||||
extern zeek::BroString* unescape_URI(const u_char* line, const u_char* line_end,
|
extern zeek::String* unescape_URI(const u_char* line, const u_char* line_end,
|
||||||
analyzer::Analyzer* analyzer);
|
analyzer::Analyzer* analyzer);
|
||||||
|
|
||||||
} } // namespace analyzer::*
|
} } // namespace analyzer::*
|
||||||
|
|
|
@ -209,7 +209,7 @@ void ICMP_Analyzer::ICMP_Sent(const struct icmp* icmpp, int len, int caplen,
|
||||||
|
|
||||||
if ( icmp_sent_payload )
|
if ( icmp_sent_payload )
|
||||||
{
|
{
|
||||||
zeek::BroString* payload = new zeek::BroString(data, std::min(len, caplen), false);
|
zeek::String* payload = new zeek::String(data, std::min(len, caplen), false);
|
||||||
|
|
||||||
EnqueueConnEvent(icmp_sent_payload,
|
EnqueueConnEvent(icmp_sent_payload,
|
||||||
ConnVal(),
|
ConnVal(),
|
||||||
|
@ -515,7 +515,7 @@ void ICMP_Analyzer::Echo(double t, const struct icmp* icmpp, int len,
|
||||||
int iid = ntohs(icmpp->icmp_hun.ih_idseq.icd_id);
|
int iid = ntohs(icmpp->icmp_hun.ih_idseq.icd_id);
|
||||||
int iseq = ntohs(icmpp->icmp_hun.ih_idseq.icd_seq);
|
int iseq = ntohs(icmpp->icmp_hun.ih_idseq.icd_seq);
|
||||||
|
|
||||||
zeek::BroString* payload = new zeek::BroString(data, caplen, false);
|
zeek::String* payload = new zeek::String(data, caplen, false);
|
||||||
|
|
||||||
EnqueueConnEvent(f,
|
EnqueueConnEvent(f,
|
||||||
ConnVal(),
|
ConnVal(),
|
||||||
|
@ -767,7 +767,7 @@ zeek::VectorValPtr ICMP_Analyzer::BuildNDOptionsVal(int caplen, const u_char* da
|
||||||
{
|
{
|
||||||
if ( caplen >= length )
|
if ( caplen >= length )
|
||||||
{
|
{
|
||||||
zeek::BroString* link_addr = new zeek::BroString(data, length, false);
|
zeek::String* link_addr = new zeek::String(data, length, false);
|
||||||
rv->Assign(2, zeek::make_intrusive<zeek::StringVal>(link_addr));
|
rv->Assign(2, zeek::make_intrusive<zeek::StringVal>(link_addr));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -837,7 +837,7 @@ zeek::VectorValPtr ICMP_Analyzer::BuildNDOptionsVal(int caplen, const u_char* da
|
||||||
|
|
||||||
if ( set_payload_field )
|
if ( set_payload_field )
|
||||||
{
|
{
|
||||||
zeek::BroString* payload = new zeek::BroString(data, std::min((int)length, caplen), false);
|
zeek::String* payload = new zeek::String(data, std::min((int)length, caplen), false);
|
||||||
rv->Assign(6, zeek::make_intrusive<zeek::StringVal>(payload));
|
rv->Assign(6, zeek::make_intrusive<zeek::StringVal>(payload));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ void Ident_Analyzer::DeliverStream(int length, const u_char* data, bool is_orig)
|
||||||
|
|
||||||
if ( line != end_of_line )
|
if ( line != end_of_line )
|
||||||
{
|
{
|
||||||
zeek::BroString s((const u_char*)orig_line, length, true);
|
zeek::String s((const u_char*)orig_line, length, true);
|
||||||
Weird("ident_request_addendum", s.CheckString());
|
Weird("ident_request_addendum", s.CheckString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,8 +172,8 @@ void Ident_Analyzer::DeliverStream(int length, const u_char* data, bool is_orig)
|
||||||
while ( --sys_end > sys_type && isspace(*sys_end) )
|
while ( --sys_end > sys_type && isspace(*sys_end) )
|
||||||
;
|
;
|
||||||
|
|
||||||
zeek::BroString* sys_type_s =
|
zeek::String* sys_type_s =
|
||||||
new zeek::BroString((const u_char*) sys_type,
|
new zeek::String((const u_char*) sys_type,
|
||||||
sys_end - sys_type + 1, true);
|
sys_end - sys_type + 1, true);
|
||||||
|
|
||||||
line = skip_whitespace(colon + 1, end_of_line);
|
line = skip_whitespace(colon + 1, end_of_line);
|
||||||
|
@ -242,7 +242,7 @@ const char* Ident_Analyzer::ParsePort(const char* line, const char* end_of_line,
|
||||||
|
|
||||||
void Ident_Analyzer::BadRequest(int length, const char* line)
|
void Ident_Analyzer::BadRequest(int length, const char* line)
|
||||||
{
|
{
|
||||||
zeek::BroString s((const u_char*)line, length, true);
|
zeek::String s((const u_char*)line, length, true);
|
||||||
Weird("bad_ident_request", s.CheckString());
|
Weird("bad_ident_request", s.CheckString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,7 +250,7 @@ void Ident_Analyzer::BadReply(int length, const char* line)
|
||||||
{
|
{
|
||||||
if ( ! did_bad_reply )
|
if ( ! did_bad_reply )
|
||||||
{
|
{
|
||||||
zeek::BroString s((const u_char*)line, length, true);
|
zeek::String s((const u_char*)line, length, true);
|
||||||
Weird("bad_ident_reply", s.CheckString());
|
Weird("bad_ident_reply", s.CheckString());
|
||||||
did_bad_reply = true;
|
did_bad_reply = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,23 +87,23 @@ void KRB_Analyzer::DeliverPacket(int len, const u_char* data, bool orig,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::StringValPtr KRB_Analyzer::GetAuthenticationInfo(const zeek::BroString* principal,
|
zeek::StringValPtr KRB_Analyzer::GetAuthenticationInfo(const zeek::String* principal,
|
||||||
const zeek::BroString* ciphertext,
|
const zeek::String* ciphertext,
|
||||||
const bro_uint_t enctype)
|
const bro_uint_t enctype)
|
||||||
{
|
{
|
||||||
#ifdef USE_KRB5
|
#ifdef USE_KRB5
|
||||||
if ( !krb_available )
|
if ( !krb_available )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
zeek::BroString delim("/");
|
zeek::String delim("/");
|
||||||
int pos = principal->FindSubstring(&delim);
|
int pos = principal->FindSubstring(&delim);
|
||||||
if ( pos == -1 )
|
if ( pos == -1 )
|
||||||
{
|
{
|
||||||
reporter->Warning("KRB: Couldn't parse principal (%s)", principal->CheckString());
|
reporter->Warning("KRB: Couldn't parse principal (%s)", principal->CheckString());
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
std::unique_ptr<zeek::BroString> service = unique_ptr<zeek::BroString>(principal->GetSubstring(0, pos));
|
std::unique_ptr<zeek::String> service = unique_ptr<zeek::String>(principal->GetSubstring(0, pos));
|
||||||
std::unique_ptr<zeek::BroString> hostname = unique_ptr<zeek::BroString>(principal->GetSubstring(pos + 1, -1));
|
std::unique_ptr<zeek::String> hostname = unique_ptr<zeek::String>(principal->GetSubstring(pos + 1, -1));
|
||||||
if ( !service || !hostname )
|
if ( !service || !hostname )
|
||||||
{
|
{
|
||||||
reporter->Warning("KRB: Couldn't parse principal (%s)", principal->CheckString());
|
reporter->Warning("KRB: Couldn't parse principal (%s)", principal->CheckString());
|
||||||
|
|
|
@ -25,8 +25,8 @@ public:
|
||||||
static analyzer::Analyzer* Instantiate(Connection* conn)
|
static analyzer::Analyzer* Instantiate(Connection* conn)
|
||||||
{ return new KRB_Analyzer(conn); }
|
{ return new KRB_Analyzer(conn); }
|
||||||
|
|
||||||
zeek::StringValPtr GetAuthenticationInfo(const zeek::BroString* principal,
|
zeek::StringValPtr GetAuthenticationInfo(const zeek::String* principal,
|
||||||
const zeek::BroString* ciphertext,
|
const zeek::String* ciphertext,
|
||||||
const bro_uint_t enctype);
|
const bro_uint_t enctype);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -21,8 +21,8 @@ public:
|
||||||
// Overriden from tcp::TCP_ApplicationAnalyzer.
|
// Overriden from tcp::TCP_ApplicationAnalyzer.
|
||||||
void EndpointEOF(bool is_orig) override;
|
void EndpointEOF(bool is_orig) override;
|
||||||
|
|
||||||
zeek::StringValPtr GetAuthenticationInfo(const zeek::BroString* principal,
|
zeek::StringValPtr GetAuthenticationInfo(const zeek::String* principal,
|
||||||
const zeek::BroString* ciphertext,
|
const zeek::String* ciphertext,
|
||||||
const bro_uint_t enctype)
|
const bro_uint_t enctype)
|
||||||
{ return zeek::val_mgr->EmptyString(); }
|
{ return zeek::val_mgr->EmptyString(); }
|
||||||
|
|
||||||
|
|
|
@ -327,7 +327,7 @@ void Login_Analyzer::SetEnv(bool orig, char* name, char* val)
|
||||||
{
|
{
|
||||||
if ( username )
|
if ( username )
|
||||||
{
|
{
|
||||||
const zeek::BroString* u = username->AsString();
|
const zeek::String* u = username->AsString();
|
||||||
const zeek::byte_vec ub = u->Bytes();
|
const zeek::byte_vec ub = u->Bytes();
|
||||||
const char* us = (const char*) ub;
|
const char* us = (const char*) ub;
|
||||||
if ( ! streq(val, us) )
|
if ( ! streq(val, us) )
|
||||||
|
@ -600,7 +600,7 @@ zeek::Val* Login_Analyzer::PopUserTextVal()
|
||||||
char* s = PopUserText();
|
char* s = PopUserText();
|
||||||
|
|
||||||
if ( s )
|
if ( s )
|
||||||
return new zeek::StringVal(new zeek::BroString(true, zeek::byte_vec(s), strlen(s)));
|
return new zeek::StringVal(new zeek::String(true, zeek::byte_vec(s), strlen(s)));
|
||||||
else
|
else
|
||||||
return zeek::val_mgr->EmptyString()->Ref();
|
return zeek::val_mgr->EmptyString()->Ref();
|
||||||
}
|
}
|
||||||
|
|
|
@ -461,7 +461,7 @@ void NVT_Analyzer::SetTerminal(const u_char* terminal, int len)
|
||||||
if ( login_terminal )
|
if ( login_terminal )
|
||||||
EnqueueConnEvent(login_terminal,
|
EnqueueConnEvent(login_terminal,
|
||||||
ConnVal(),
|
ConnVal(),
|
||||||
zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(terminal, len, false))
|
zeek::make_intrusive<zeek::StringVal>(new zeek::String(terminal, len, false))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -132,7 +132,7 @@ zeek::StringValPtr to_string_val(const zeek::data_chunk_t buf)
|
||||||
return to_string_val(buf.length, buf.data);
|
return to_string_val(buf.length, buf.data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static zeek::data_chunk_t get_data_chunk(zeek::BroString* s)
|
static zeek::data_chunk_t get_data_chunk(zeek::String* s)
|
||||||
{
|
{
|
||||||
zeek::data_chunk_t b;
|
zeek::data_chunk_t b;
|
||||||
b.length = s->Len();
|
b.length = s->Len();
|
||||||
|
@ -380,7 +380,7 @@ int MIME_get_quoted_string(int len, const char* data, zeek::data_chunk_t* str)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int MIME_get_value(int len, const char* data, zeek::BroString*& buf, bool is_boundary)
|
int MIME_get_value(int len, const char* data, zeek::String*& buf, bool is_boundary)
|
||||||
{
|
{
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
|
|
||||||
|
@ -408,7 +408,7 @@ int MIME_get_value(int len, const char* data, zeek::BroString*& buf, bool is_bou
|
||||||
if ( end < 0 )
|
if ( end < 0 )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
buf = new zeek::BroString((const u_char*)str.data, str.length, true);
|
buf = new zeek::String((const u_char*)str.data, str.length, true);
|
||||||
return offset + end;
|
return offset + end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -416,7 +416,7 @@ int MIME_get_value(int len, const char* data, zeek::BroString*& buf, bool is_bou
|
||||||
// Decode each quoted-pair: a '\' followed by a character by the
|
// Decode each quoted-pair: a '\' followed by a character by the
|
||||||
// quoted character. The decoded string is returned.
|
// quoted character. The decoded string is returned.
|
||||||
|
|
||||||
zeek::BroString* MIME_decode_quoted_pairs(zeek::data_chunk_t buf)
|
zeek::String* MIME_decode_quoted_pairs(zeek::data_chunk_t buf)
|
||||||
{
|
{
|
||||||
const char* data = buf.data;
|
const char* data = buf.data;
|
||||||
char* dest = new char[buf.length+1];
|
char* dest = new char[buf.length+1];
|
||||||
|
@ -436,7 +436,7 @@ zeek::BroString* MIME_decode_quoted_pairs(zeek::data_chunk_t buf)
|
||||||
dest[j++] = data[i];
|
dest[j++] = data[i];
|
||||||
dest[j] = 0;
|
dest[j] = 0;
|
||||||
|
|
||||||
return new zeek::BroString(true, (zeek::byte_vec) dest, j);
|
return new zeek::String(true, (zeek::byte_vec) dest, j);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -457,10 +457,10 @@ MIME_Multiline::~MIME_Multiline()
|
||||||
|
|
||||||
void MIME_Multiline::append(int len, const char* data)
|
void MIME_Multiline::append(int len, const char* data)
|
||||||
{
|
{
|
||||||
buffer.push_back(new zeek::BroString((const u_char*) data, len, true));
|
buffer.push_back(new zeek::String((const u_char*) data, len, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::BroString* MIME_Multiline::get_concatenated_line()
|
zeek::String* MIME_Multiline::get_concatenated_line()
|
||||||
{
|
{
|
||||||
if ( buffer.empty() )
|
if ( buffer.empty() )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -477,7 +477,7 @@ MIME_Header::MIME_Header(MIME_Multiline* hl)
|
||||||
lines = hl;
|
lines = hl;
|
||||||
name = value = value_token = rest_value = null_data_chunk;
|
name = value = value_token = rest_value = null_data_chunk;
|
||||||
|
|
||||||
zeek::BroString* s = hl->get_concatenated_line();
|
zeek::String* s = hl->get_concatenated_line();
|
||||||
int len = s->Len();
|
int len = s->Len();
|
||||||
const char* data = (const char*) s->Bytes();
|
const char* data = (const char*) s->Bytes();
|
||||||
|
|
||||||
|
@ -844,7 +844,7 @@ bool MIME_Entity::ParseContentEncodingField(MIME_Header* h)
|
||||||
}
|
}
|
||||||
|
|
||||||
delete content_encoding_str;
|
delete content_encoding_str;
|
||||||
content_encoding_str = new zeek::BroString((const u_char*)enc.data, enc.length, true);
|
content_encoding_str = new zeek::String((const u_char*)enc.data, enc.length, true);
|
||||||
ParseContentEncoding(enc);
|
ParseContentEncoding(enc);
|
||||||
|
|
||||||
if ( need_to_parse_parameters )
|
if ( need_to_parse_parameters )
|
||||||
|
@ -892,7 +892,7 @@ bool MIME_Entity::ParseFieldParameters(int len, const char* data)
|
||||||
data += offset;
|
data += offset;
|
||||||
len -= offset;
|
len -= offset;
|
||||||
|
|
||||||
zeek::BroString* val = nullptr;
|
zeek::String* val = nullptr;
|
||||||
|
|
||||||
if ( current_field_type == MIME_CONTENT_TYPE &&
|
if ( current_field_type == MIME_CONTENT_TYPE &&
|
||||||
content_type == CONTENT_TYPE_MULTIPART &&
|
content_type == CONTENT_TYPE_MULTIPART &&
|
||||||
|
@ -910,7 +910,7 @@ bool MIME_Entity::ParseFieldParameters(int len, const char* data)
|
||||||
|
|
||||||
zeek::data_chunk_t vd = get_data_chunk(val);
|
zeek::data_chunk_t vd = get_data_chunk(val);
|
||||||
delete multipart_boundary;
|
delete multipart_boundary;
|
||||||
multipart_boundary = new zeek::BroString((const u_char*)vd.data,
|
multipart_boundary = new zeek::String((const u_char*)vd.data,
|
||||||
vd.length, true);
|
vd.length, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1352,7 +1352,7 @@ MIME_Mail::MIME_Mail(analyzer::Analyzer* mail_analyzer, bool orig, int buf_size)
|
||||||
length = max_chunk_length;
|
length = max_chunk_length;
|
||||||
|
|
||||||
buffer_start = data_start = 0;
|
buffer_start = data_start = 0;
|
||||||
data_buffer = new zeek::BroString(true, new u_char[length+1], length);
|
data_buffer = new zeek::String(true, new u_char[length+1], length);
|
||||||
|
|
||||||
if ( mime_content_hash )
|
if ( mime_content_hash )
|
||||||
{
|
{
|
||||||
|
@ -1383,7 +1383,7 @@ void MIME_Mail::Done()
|
||||||
analyzer->EnqueueConnEvent(mime_content_hash,
|
analyzer->EnqueueConnEvent(mime_content_hash,
|
||||||
analyzer->ConnVal(),
|
analyzer->ConnVal(),
|
||||||
zeek::val_mgr->Count(content_hash_length),
|
zeek::val_mgr->Count(content_hash_length),
|
||||||
zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(true, digest, 16))
|
zeek::make_intrusive<zeek::StringVal>(new zeek::String(true, digest, 16))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1418,7 +1418,7 @@ void MIME_Mail::EndEntity(MIME_Entity* /* entity */)
|
||||||
{
|
{
|
||||||
if ( mime_entity_data )
|
if ( mime_entity_data )
|
||||||
{
|
{
|
||||||
zeek::BroString* s = concatenate(entity_content);
|
zeek::String* s = concatenate(entity_content);
|
||||||
|
|
||||||
analyzer->EnqueueConnEvent(mime_entity_data,
|
analyzer->EnqueueConnEvent(mime_entity_data,
|
||||||
analyzer->ConnVal(),
|
analyzer->ConnVal(),
|
||||||
|
@ -1474,7 +1474,7 @@ void MIME_Mail::SubmitData(int len, const char* buf)
|
||||||
|
|
||||||
if ( mime_entity_data || mime_all_data )
|
if ( mime_entity_data || mime_all_data )
|
||||||
{
|
{
|
||||||
zeek::BroString* s = new zeek::BroString((const u_char*) buf, len, false);
|
zeek::String* s = new zeek::String((const u_char*) buf, len, false);
|
||||||
|
|
||||||
if ( mime_entity_data )
|
if ( mime_entity_data )
|
||||||
entity_content.push_back(s);
|
entity_content.push_back(s);
|
||||||
|
@ -1531,7 +1531,7 @@ void MIME_Mail::SubmitAllData()
|
||||||
{
|
{
|
||||||
if ( mime_all_data )
|
if ( mime_all_data )
|
||||||
{
|
{
|
||||||
zeek::BroString* s = concatenate(all_content);
|
zeek::String* s = concatenate(all_content);
|
||||||
delete_strings(all_content);
|
delete_strings(all_content);
|
||||||
|
|
||||||
analyzer->EnqueueConnEvent(mime_all_data,
|
analyzer->EnqueueConnEvent(mime_all_data,
|
||||||
|
|
|
@ -63,11 +63,11 @@ public:
|
||||||
~MIME_Multiline();
|
~MIME_Multiline();
|
||||||
|
|
||||||
void append(int len, const char* data);
|
void append(int len, const char* data);
|
||||||
zeek::BroString* get_concatenated_line();
|
zeek::String* get_concatenated_line();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::vector<const zeek::BroString*> buffer;
|
std::vector<const zeek::String*> buffer;
|
||||||
zeek::BroString* line;
|
zeek::String* line;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MIME_Header {
|
class MIME_Header {
|
||||||
|
@ -166,8 +166,8 @@ protected:
|
||||||
|
|
||||||
zeek::StringValPtr content_type_str;
|
zeek::StringValPtr content_type_str;
|
||||||
zeek::StringValPtr content_subtype_str;
|
zeek::StringValPtr content_subtype_str;
|
||||||
zeek::BroString* content_encoding_str;
|
zeek::String* content_encoding_str;
|
||||||
zeek::BroString* multipart_boundary;
|
zeek::String* multipart_boundary;
|
||||||
|
|
||||||
int content_type, content_subtype, content_encoding;
|
int content_type, content_subtype, content_encoding;
|
||||||
|
|
||||||
|
@ -269,10 +269,10 @@ protected:
|
||||||
int compute_content_hash;
|
int compute_content_hash;
|
||||||
int content_hash_length;
|
int content_hash_length;
|
||||||
EVP_MD_CTX* md5_hash;
|
EVP_MD_CTX* md5_hash;
|
||||||
std::vector<const zeek::BroString*> entity_content;
|
std::vector<const zeek::String*> entity_content;
|
||||||
std::vector<const zeek::BroString*> all_content;
|
std::vector<const zeek::String*> all_content;
|
||||||
|
|
||||||
zeek::BroString* data_buffer;
|
zeek::String* data_buffer;
|
||||||
|
|
||||||
uint64_t cur_entity_len;
|
uint64_t cur_entity_len;
|
||||||
std::string cur_entity_id;
|
std::string cur_entity_id;
|
||||||
|
@ -299,9 +299,9 @@ extern int MIME_skip_lws_comments(int len, const char* data);
|
||||||
extern int MIME_get_token(int len, const char* data, zeek::data_chunk_t* token,
|
extern int MIME_get_token(int len, const char* data, zeek::data_chunk_t* token,
|
||||||
bool is_boundary = false);
|
bool is_boundary = false);
|
||||||
extern int MIME_get_slash_token_pair(int len, const char* data, zeek::data_chunk_t* first, zeek::data_chunk_t* second);
|
extern int MIME_get_slash_token_pair(int len, const char* data, zeek::data_chunk_t* first, zeek::data_chunk_t* second);
|
||||||
extern int MIME_get_value(int len, const char* data, zeek::BroString*& buf,
|
extern int MIME_get_value(int len, const char* data, zeek::String*& buf,
|
||||||
bool is_boundary = false);
|
bool is_boundary = false);
|
||||||
extern int MIME_get_field_name(int len, const char* data, zeek::data_chunk_t* name);
|
extern int MIME_get_field_name(int len, const char* data, zeek::data_chunk_t* name);
|
||||||
extern zeek::BroString* MIME_decode_quoted_pairs(zeek::data_chunk_t buf);
|
extern zeek::String* MIME_decode_quoted_pairs(zeek::data_chunk_t buf);
|
||||||
|
|
||||||
} } // namespace analyzer::*
|
} } // namespace analyzer::*
|
||||||
|
|
|
@ -125,11 +125,11 @@ void NetbiosSSN_Interpreter::ParseBroadcast(const u_char* data, int len,
|
||||||
// FIND THE NUL-TERMINATED NAME STRINGS HERE!
|
// FIND THE NUL-TERMINATED NAME STRINGS HERE!
|
||||||
// Not sure what's in them, so we don't keep them currently.
|
// Not sure what's in them, so we don't keep them currently.
|
||||||
|
|
||||||
zeek::BroString* srcname = new zeek::BroString((char*) data);
|
zeek::String* srcname = new zeek::String((char*) data);
|
||||||
data += srcname->Len()+1;
|
data += srcname->Len()+1;
|
||||||
len -= srcname->Len();
|
len -= srcname->Len();
|
||||||
|
|
||||||
zeek::BroString* dstname = new zeek::BroString((char*) data);
|
zeek::String* dstname = new zeek::String((char*) data);
|
||||||
data += dstname->Len()+1;
|
data += dstname->Len()+1;
|
||||||
len -= dstname->Len();
|
len -= dstname->Len();
|
||||||
|
|
||||||
|
@ -324,11 +324,11 @@ void NetbiosSSN_Interpreter::Event(EventHandlerPtr event, const u_char* data,
|
||||||
analyzer->EnqueueConnEvent(event,
|
analyzer->EnqueueConnEvent(event,
|
||||||
analyzer->ConnVal(),
|
analyzer->ConnVal(),
|
||||||
zeek::val_mgr->Bool(is_orig),
|
zeek::val_mgr->Bool(is_orig),
|
||||||
zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(data, len, false)));
|
zeek::make_intrusive<zeek::StringVal>(new zeek::String(data, len, false)));
|
||||||
else
|
else
|
||||||
analyzer->EnqueueConnEvent(event,
|
analyzer->EnqueueConnEvent(event,
|
||||||
analyzer->ConnVal(),
|
analyzer->ConnVal(),
|
||||||
zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(data, len, false)));
|
zeek::make_intrusive<zeek::StringVal>(new zeek::String(data, len, false)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -78,7 +78,7 @@ void POP3_Analyzer::DeliverStream(int len, const u_char* data, bool orig)
|
||||||
if ( (TCP() && TCP()->IsPartial()) )
|
if ( (TCP() && TCP()->IsPartial()) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
zeek::BroString terminated_string(data, len, true);
|
zeek::String terminated_string(data, len, true);
|
||||||
|
|
||||||
if ( orig )
|
if ( orig )
|
||||||
ProcessRequest(len, (char*) terminated_string.Bytes());
|
ProcessRequest(len, (char*) terminated_string.Bytes());
|
||||||
|
@ -135,8 +135,8 @@ void POP3_Analyzer::ProcessRequest(int length, const char* line)
|
||||||
{
|
{
|
||||||
++authLines;
|
++authLines;
|
||||||
|
|
||||||
zeek::BroString encoded(line);
|
zeek::String encoded(line);
|
||||||
zeek::BroString* decoded = decode_base64(&encoded, nullptr, Conn());
|
zeek::String* decoded = decode_base64(&encoded, nullptr, Conn());
|
||||||
|
|
||||||
if ( ! decoded )
|
if ( ! decoded )
|
||||||
{
|
{
|
||||||
|
|
|
@ -218,7 +218,7 @@ zeek::StringValPtr MOUNT_Interp::mount3_fh(const u_char*& buf, int& n)
|
||||||
if ( ! fh )
|
if ( ! fh )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(fh, fh_n, false));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(fh, fh_n, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::StringValPtr MOUNT_Interp::mount3_filename(const u_char*& buf, int& n)
|
zeek::StringValPtr MOUNT_Interp::mount3_filename(const u_char*& buf, int& n)
|
||||||
|
@ -229,7 +229,7 @@ zeek::StringValPtr MOUNT_Interp::mount3_filename(const u_char*& buf, int& n)
|
||||||
if ( ! name )
|
if ( ! name )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(name, name_len, false));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(name, name_len, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::RecordValPtr MOUNT_Interp::mount3_dirmntargs(const u_char*& buf, int& n)
|
zeek::RecordValPtr MOUNT_Interp::mount3_dirmntargs(const u_char*& buf, int& n)
|
||||||
|
|
|
@ -297,7 +297,7 @@ zeek::StringValPtr NFS_Interp::nfs3_file_data(const u_char*& buf, int& n, uint64
|
||||||
data_n = std::min(data_n, int(zeek::BifConst::NFS3::return_data_max));
|
data_n = std::min(data_n, int(zeek::BifConst::NFS3::return_data_max));
|
||||||
|
|
||||||
if ( data && data_n > 0 )
|
if ( data && data_n > 0 )
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(data, data_n, false));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(data, data_n, false));
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -344,7 +344,7 @@ zeek::StringValPtr NFS_Interp::nfs3_fh(const u_char*& buf, int& n)
|
||||||
if ( ! fh )
|
if ( ! fh )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(fh, fh_n, false));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(fh, fh_n, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -452,7 +452,7 @@ zeek::StringValPtr NFS_Interp::nfs3_filename(const u_char*& buf, int& n)
|
||||||
if ( ! name )
|
if ( ! name )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(name, name_len, false));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(name, name_len, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::RecordValPtr NFS_Interp::nfs3_diropargs(const u_char*& buf, int& n)
|
zeek::RecordValPtr NFS_Interp::nfs3_diropargs(const u_char*& buf, int& n)
|
||||||
|
|
|
@ -183,7 +183,7 @@ void SMTP_Analyzer::ProcessLine(int length, const char* line, bool orig)
|
||||||
delete line_after_gap;
|
delete line_after_gap;
|
||||||
|
|
||||||
line_after_gap =
|
line_after_gap =
|
||||||
new zeek::BroString((const u_char *) line, length, true);
|
new zeek::String((const u_char *) line, length, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if ( state == SMTP_IN_DATA && line[0] == '.' && length == 1 )
|
else if ( state == SMTP_IN_DATA && line[0] == '.' && length == 1 )
|
||||||
|
|
|
@ -84,7 +84,7 @@ protected:
|
||||||
int pending_reply; // code assoc. w/ multi-line reply, or 0
|
int pending_reply; // code assoc. w/ multi-line reply, or 0
|
||||||
std::list<int> pending_cmd_q; // to support pipelining
|
std::list<int> pending_cmd_q; // to support pipelining
|
||||||
bool skip_data; // whether to skip message body
|
bool skip_data; // whether to skip message body
|
||||||
zeek::BroString* line_after_gap; // last line before the first reply
|
zeek::String* line_after_gap; // last line before the first reply
|
||||||
// after a gap
|
// after a gap
|
||||||
|
|
||||||
mime::MIME_Mail* mail;
|
mime::MIME_Mail* mail;
|
||||||
|
|
|
@ -448,8 +448,8 @@ void TCP_Reassembler::Overlap(const u_char* b1, const u_char* b2, uint64_t n)
|
||||||
// we've ever seen for the connection.
|
// we've ever seen for the connection.
|
||||||
(n > 1 || endp->peer->HasDoneSomething()) )
|
(n > 1 || endp->peer->HasDoneSomething()) )
|
||||||
{
|
{
|
||||||
zeek::BroString* b1_s = new zeek::BroString((const u_char*) b1, n, false);
|
zeek::String* b1_s = new zeek::String((const u_char*) b1, n, false);
|
||||||
zeek::BroString* b2_s = new zeek::BroString((const u_char*) b2, n, false);
|
zeek::String* b2_s = new zeek::String((const u_char*) b2, n, false);
|
||||||
|
|
||||||
tcp_analyzer->EnqueueConnEvent(rexmit_inconsistency,
|
tcp_analyzer->EnqueueConnEvent(rexmit_inconsistency,
|
||||||
tcp_analyzer->ConnVal(),
|
tcp_analyzer->ConnVal(),
|
||||||
|
|
|
@ -112,9 +112,9 @@ zeek::RecordValPtr TeredoEncapsulation::BuildVal(const IP_Hdr* inner) const
|
||||||
uint64_t nonce = ntohll(*((uint64_t*)(auth + 4 + id_len + au_len)));
|
uint64_t nonce = ntohll(*((uint64_t*)(auth + 4 + id_len + au_len)));
|
||||||
uint8_t conf = *((uint8_t*)(auth + 4 + id_len + au_len + 8));
|
uint8_t conf = *((uint8_t*)(auth + 4 + id_len + au_len + 8));
|
||||||
teredo_auth->Assign(0, zeek::make_intrusive<zeek::StringVal>(
|
teredo_auth->Assign(0, zeek::make_intrusive<zeek::StringVal>(
|
||||||
new zeek::BroString(auth + 4, id_len, true)));
|
new zeek::String(auth + 4, id_len, true)));
|
||||||
teredo_auth->Assign(1, zeek::make_intrusive<zeek::StringVal>(
|
teredo_auth->Assign(1, zeek::make_intrusive<zeek::StringVal>(
|
||||||
new zeek::BroString(auth + 4 + id_len, au_len, true)));
|
new zeek::String(auth + 4 + id_len, au_len, true)));
|
||||||
teredo_auth->Assign(2, zeek::val_mgr->Count(nonce));
|
teredo_auth->Assign(2, zeek::val_mgr->Count(nonce));
|
||||||
teredo_auth->Assign(3, zeek::val_mgr->Count(conf));
|
teredo_auth->Assign(3, zeek::val_mgr->Count(conf));
|
||||||
teredo_hdr->Assign(0, std::move(teredo_auth));
|
teredo_hdr->Assign(0, std::move(teredo_auth));
|
||||||
|
|
|
@ -47,7 +47,7 @@ std::set<std::string> val_to_topic_set(zeek::Val* val)
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool publish_event_args(val_list& args, const zeek::BroString* topic,
|
static bool publish_event_args(val_list& args, const zeek::String* topic,
|
||||||
zeek::detail::Frame* frame)
|
zeek::detail::Frame* frame)
|
||||||
{
|
{
|
||||||
bro_broker::Manager::ScriptScopeGuard ssg;
|
bro_broker::Manager::ScriptScopeGuard ssg;
|
||||||
|
|
|
@ -325,7 +325,7 @@ void File::InferMetadata()
|
||||||
if ( bof_buffer.size == 0 )
|
if ( bof_buffer.size == 0 )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
zeek::BroString* bs = concatenate(bof_buffer.chunks);
|
zeek::String* bs = concatenate(bof_buffer.chunks);
|
||||||
val->Assign<zeek::StringVal>(bof_buffer_idx, bs);
|
val->Assign<zeek::StringVal>(bof_buffer_idx, bs);
|
||||||
bof_buffer_val = val->GetField(bof_buffer_idx).get();
|
bof_buffer_val = val->GetField(bof_buffer_idx).get();
|
||||||
}
|
}
|
||||||
|
@ -359,7 +359,7 @@ bool File::BufferBOF(const u_char* data, uint64_t len)
|
||||||
|
|
||||||
uint64_t desired_size = LookupFieldDefaultCount(bof_buffer_size_idx);
|
uint64_t desired_size = LookupFieldDefaultCount(bof_buffer_size_idx);
|
||||||
|
|
||||||
bof_buffer.chunks.push_back(new zeek::BroString(data, len, false));
|
bof_buffer.chunks.push_back(new zeek::String(data, len, false));
|
||||||
bof_buffer.size += len;
|
bof_buffer.size += len;
|
||||||
|
|
||||||
if ( bof_buffer.size < desired_size )
|
if ( bof_buffer.size < desired_size )
|
||||||
|
@ -369,7 +369,7 @@ bool File::BufferBOF(const u_char* data, uint64_t len)
|
||||||
|
|
||||||
if ( bof_buffer.size > 0 )
|
if ( bof_buffer.size > 0 )
|
||||||
{
|
{
|
||||||
zeek::BroString* bs = concatenate(bof_buffer.chunks);
|
zeek::String* bs = concatenate(bof_buffer.chunks);
|
||||||
val->Assign(bof_buffer_idx, zeek::make_intrusive<zeek::StringVal>(bs));
|
val->Assign(bof_buffer_idx, zeek::make_intrusive<zeek::StringVal>(bs));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -370,7 +370,7 @@ protected:
|
||||||
|
|
||||||
bool full;
|
bool full;
|
||||||
uint64_t size;
|
uint64_t size;
|
||||||
zeek::BroString::CVec chunks;
|
zeek::String::CVec chunks;
|
||||||
} bof_buffer; /**< Beginning of file buffer. */
|
} bof_buffer; /**< Beginning of file buffer. */
|
||||||
|
|
||||||
WeirdStateMap weird_state;
|
WeirdStateMap weird_state;
|
||||||
|
|
|
@ -80,7 +80,7 @@ void Manager::SetHandle(const string& handle)
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if ( debug_logger.IsEnabled(DBG_FILE_ANALYSIS) )
|
if ( debug_logger.IsEnabled(DBG_FILE_ANALYSIS) )
|
||||||
{
|
{
|
||||||
zeek::BroString tmp{handle};
|
zeek::String tmp{handle};
|
||||||
auto rendered = tmp.Render();
|
auto rendered = tmp.Render();
|
||||||
DBG_LOG(DBG_FILE_ANALYSIS, "Set current handle to %s", rendered);
|
DBG_LOG(DBG_FILE_ANALYSIS, "Set current handle to %s", rendered);
|
||||||
delete [] rendered;
|
delete [] rendered;
|
||||||
|
|
|
@ -45,7 +45,7 @@ bool DataEvent::DeliverChunk(const u_char* data, uint64_t len, uint64_t offset)
|
||||||
|
|
||||||
mgr.Enqueue(chunk_event,
|
mgr.Enqueue(chunk_event,
|
||||||
GetFile()->ToVal(),
|
GetFile()->ToVal(),
|
||||||
zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(data, len, false)),
|
zeek::make_intrusive<zeek::StringVal>(new zeek::String(data, len, false)),
|
||||||
zeek::val_mgr->Count(offset)
|
zeek::val_mgr->Count(offset)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ bool DataEvent::DeliverStream(const u_char* data, uint64_t len)
|
||||||
|
|
||||||
mgr.Enqueue(stream_event,
|
mgr.Enqueue(stream_event,
|
||||||
GetFile()->ToVal(),
|
GetFile()->ToVal(),
|
||||||
zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(data, len, false))
|
zeek::make_intrusive<zeek::StringVal>(new zeek::String(data, len, false))
|
||||||
);
|
);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -239,7 +239,7 @@ bool Manager::CreateStream(Stream* info, zeek::RecordVal* description)
|
||||||
|
|
||||||
// get the source ...
|
// get the source ...
|
||||||
auto source_val = description->GetFieldOrDefault("source");
|
auto source_val = description->GetFieldOrDefault("source");
|
||||||
const zeek::BroString* bsource = source_val->AsString();
|
const zeek::String* bsource = source_val->AsString();
|
||||||
string source((const char*) bsource->Bytes(), bsource->Len());
|
string source((const char*) bsource->Bytes(), bsource->Len());
|
||||||
|
|
||||||
ReaderBackend::ReaderInfo rinfo;
|
ReaderBackend::ReaderInfo rinfo;
|
||||||
|
@ -2195,7 +2195,7 @@ zeek::Val* Manager::ValueToVal(const Stream* i, const Value* val, zeek::Type* re
|
||||||
|
|
||||||
case zeek::TYPE_STRING:
|
case zeek::TYPE_STRING:
|
||||||
{
|
{
|
||||||
zeek::BroString *s = new zeek::BroString((const u_char*)val->val.string_val.data, val->val.string_val.length, true);
|
zeek::String *s = new zeek::String((const u_char*)val->val.string_val.data, val->val.string_val.length, true);
|
||||||
return new zeek::StringVal(s);
|
return new zeek::StringVal(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -976,7 +976,7 @@ threading::Value* Manager::ValToLogVal(zeek::Val* val, zeek::Type* ty)
|
||||||
|
|
||||||
case zeek::TYPE_STRING:
|
case zeek::TYPE_STRING:
|
||||||
{
|
{
|
||||||
const zeek::BroString* s = val->AsString();
|
const zeek::String* s = val->AsString();
|
||||||
char* buf = new char[s->Len()];
|
char* buf = new char[s->Len()];
|
||||||
memcpy(buf, s->Bytes(), s->Len());
|
memcpy(buf, s->Bytes(), s->Len());
|
||||||
|
|
||||||
|
|
|
@ -560,7 +560,7 @@ F RET_CONST(zeek::val_mgr->False()->Ref())
|
||||||
|
|
||||||
s[i-1] = '\0';
|
s[i-1] = '\0';
|
||||||
|
|
||||||
RET_CONST(new zeek::StringVal(new zeek::BroString(1, (zeek::byte_vec) s, i-1)))
|
RET_CONST(new zeek::StringVal(new zeek::String(1, (zeek::byte_vec) s, i-1)))
|
||||||
}
|
}
|
||||||
|
|
||||||
<RE>([^/\\\n]|{ESCSEQ})+ {
|
<RE>([^/\\\n]|{ESCSEQ})+ {
|
||||||
|
|
|
@ -65,11 +65,11 @@ function string_cat%(...%): string
|
||||||
n += a->AsString()->Len();
|
n += a->AsString()->Len();
|
||||||
|
|
||||||
u_char* b = new u_char[n+1];
|
u_char* b = new u_char[n+1];
|
||||||
zeek::BroString* s = new zeek::BroString(1, b, n);
|
zeek::String* s = new zeek::String(1, b, n);
|
||||||
|
|
||||||
for ( const auto& a : @ARG@ )
|
for ( const auto& a : @ARG@ )
|
||||||
{
|
{
|
||||||
const zeek::BroString* s = a->AsString();
|
const zeek::String* s = a->AsString();
|
||||||
memcpy(b, s->Bytes(), s->Len());
|
memcpy(b, s->Bytes(), s->Len());
|
||||||
b += s->Len();
|
b += s->Len();
|
||||||
}
|
}
|
||||||
|
@ -111,7 +111,7 @@ function join_string_vec%(vec: string_vec, sep: string%): string
|
||||||
e->Describe(&d);
|
e->Describe(&d);
|
||||||
}
|
}
|
||||||
|
|
||||||
zeek::BroString* s = new zeek::BroString(1, d.TakeBytes(), d.Len());
|
zeek::String* s = new zeek::String(1, d.TakeBytes(), d.Len());
|
||||||
s->SetUseFreeToDelete(true);
|
s->SetUseFreeToDelete(true);
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(s);
|
return zeek::make_intrusive<zeek::StringVal>(s);
|
||||||
|
@ -162,7 +162,7 @@ function edit%(arg_s: string, arg_edit_char: string%): string
|
||||||
|
|
||||||
new_s[ind] = '\0';
|
new_s[ind] = '\0';
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(1, byte_vec(new_s), ind));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(1, byte_vec(new_s), ind));
|
||||||
%}
|
%}
|
||||||
|
|
||||||
## Get a substring from a string, given a starting position and length.
|
## Get a substring from a string, given a starting position and length.
|
||||||
|
@ -180,10 +180,10 @@ function sub_bytes%(s: string, start: count, n: int%): string
|
||||||
if ( start > 0 )
|
if ( start > 0 )
|
||||||
--start; // make it 0-based
|
--start; // make it 0-based
|
||||||
|
|
||||||
zeek::BroString* ss = s->AsString()->GetSubstring(start, n);
|
zeek::String* ss = s->AsString()->GetSubstring(start, n);
|
||||||
|
|
||||||
if ( ! ss )
|
if ( ! ss )
|
||||||
ss = new zeek::BroString("");
|
ss = new zeek::String("");
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(ss);
|
return zeek::make_intrusive<zeek::StringVal>(ss);
|
||||||
%}
|
%}
|
||||||
|
@ -541,7 +541,7 @@ function to_lower%(str: string%): string
|
||||||
|
|
||||||
*ls++ = '\0';
|
*ls++ = '\0';
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(1, lower_s, n));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(1, lower_s, n));
|
||||||
%}
|
%}
|
||||||
|
|
||||||
## Replaces all lowercase letters in a string with their uppercase counterpart.
|
## Replaces all lowercase letters in a string with their uppercase counterpart.
|
||||||
|
@ -570,7 +570,7 @@ function to_upper%(str: string%): string
|
||||||
|
|
||||||
*us++ = '\0';
|
*us++ = '\0';
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(1, upper_s, n));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(1, upper_s, n));
|
||||||
%}
|
%}
|
||||||
|
|
||||||
## Replaces non-printable characters in a string with escaped sequences. The
|
## Replaces non-printable characters in a string with escaped sequences. The
|
||||||
|
@ -590,7 +590,7 @@ function to_upper%(str: string%): string
|
||||||
function clean%(str: string%): string
|
function clean%(str: string%): string
|
||||||
%{
|
%{
|
||||||
char* s = str->AsString()->Render();
|
char* s = str->AsString()->Render();
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(1, byte_vec(s), strlen(s)));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(1, byte_vec(s), strlen(s)));
|
||||||
%}
|
%}
|
||||||
|
|
||||||
## Replaces non-printable characters in a string with escaped sequences. The
|
## Replaces non-printable characters in a string with escaped sequences. The
|
||||||
|
@ -607,8 +607,8 @@ function clean%(str: string%): string
|
||||||
## .. zeek:see:: clean escape_string
|
## .. zeek:see:: clean escape_string
|
||||||
function to_string_literal%(str: string%): string
|
function to_string_literal%(str: string%): string
|
||||||
%{
|
%{
|
||||||
char* s = str->AsString()->Render(zeek::BroString::BRO_STRING_LITERAL);
|
char* s = str->AsString()->Render(zeek::String::BRO_STRING_LITERAL);
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(1, byte_vec(s), strlen(s)));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(1, byte_vec(s), strlen(s)));
|
||||||
%}
|
%}
|
||||||
|
|
||||||
## Determines whether a given string contains only ASCII characters.
|
## Determines whether a given string contains only ASCII characters.
|
||||||
|
@ -646,7 +646,7 @@ function is_ascii%(str: string%): bool
|
||||||
## .. zeek:see:: clean to_string_literal
|
## .. zeek:see:: clean to_string_literal
|
||||||
function escape_string%(s: string%): string
|
function escape_string%(s: string%): string
|
||||||
%{
|
%{
|
||||||
char* escstr = s->AsString()->Render(zeek::BroString::ESC_HEX | zeek::BroString::ESC_ESC);
|
char* escstr = s->AsString()->Render(zeek::String::ESC_HEX | zeek::String::ESC_ESC);
|
||||||
auto val = zeek::make_intrusive<zeek::StringVal>(escstr);
|
auto val = zeek::make_intrusive<zeek::StringVal>(escstr);
|
||||||
delete [] escstr;
|
delete [] escstr;
|
||||||
return val;
|
return val;
|
||||||
|
@ -666,7 +666,7 @@ function string_to_ascii_hex%(s: string%): string
|
||||||
for ( int i = 0; i < s->Len(); ++i )
|
for ( int i = 0; i < s->Len(); ++i )
|
||||||
sprintf(x + i * 2, "%02x", sp[i]);
|
sprintf(x + i * 2, "%02x", sp[i]);
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(1, (u_char*) x, s->Len() * 2));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(1, (u_char*) x, s->Len() * 2));
|
||||||
%}
|
%}
|
||||||
|
|
||||||
## Uses the Smith-Waterman algorithm to find similar/overlapping substrings.
|
## Uses the Smith-Waterman algorithm to find similar/overlapping substrings.
|
||||||
|
@ -706,20 +706,20 @@ function str_smith_waterman%(s1: string, s2: string, params: sw_params%) : sw_su
|
||||||
function str_split%(s: string, idx: index_vec%): string_vec
|
function str_split%(s: string, idx: index_vec%): string_vec
|
||||||
%{
|
%{
|
||||||
auto idx_v = idx->AsVector();
|
auto idx_v = idx->AsVector();
|
||||||
zeek::BroString::IdxVec indices(idx_v->size());
|
zeek::String::IdxVec indices(idx_v->size());
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
for ( i = 0; i < idx_v->size(); i++ )
|
for ( i = 0; i < idx_v->size(); i++ )
|
||||||
indices[i] = (*idx_v)[i]->AsCount();
|
indices[i] = (*idx_v)[i]->AsCount();
|
||||||
|
|
||||||
zeek::BroString::Vec* result = s->AsString()->Split(indices);
|
zeek::String::Vec* result = s->AsString()->Split(indices);
|
||||||
auto result_v = zeek::make_intrusive<zeek::VectorVal>(zeek::id::string_vec);
|
auto result_v = zeek::make_intrusive<zeek::VectorVal>(zeek::id::string_vec);
|
||||||
|
|
||||||
if ( result )
|
if ( result )
|
||||||
{
|
{
|
||||||
i = 1;
|
i = 1;
|
||||||
|
|
||||||
for ( zeek::BroString::VecIt it = result->begin();
|
for ( zeek::String::VecIt it = result->begin();
|
||||||
it != result->end(); ++it, ++i )
|
it != result->end(); ++it, ++i )
|
||||||
result_v->Assign(i, zeek::make_intrusive<zeek::StringVal>(*it));
|
result_v->Assign(i, zeek::make_intrusive<zeek::StringVal>(*it));
|
||||||
// StringVal now possesses string.
|
// StringVal now possesses string.
|
||||||
|
@ -744,7 +744,7 @@ function strip%(str: string%): string
|
||||||
|
|
||||||
if ( n == 0 )
|
if ( n == 0 )
|
||||||
// Empty string.
|
// Empty string.
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(s, n, 1));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(s, n, 1));
|
||||||
|
|
||||||
const u_char* sp = s;
|
const u_char* sp = s;
|
||||||
|
|
||||||
|
@ -757,11 +757,11 @@ function strip%(str: string%): string
|
||||||
while ( isspace(*sp) && sp <= e )
|
while ( isspace(*sp) && sp <= e )
|
||||||
++sp;
|
++sp;
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(sp, (e - sp + 1), 1));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(sp, (e - sp + 1), 1));
|
||||||
%}
|
%}
|
||||||
|
|
||||||
%%{
|
%%{
|
||||||
static bool should_strip(u_char c, const zeek::BroString* strip_chars)
|
static bool should_strip(u_char c, const zeek::String* strip_chars)
|
||||||
{
|
{
|
||||||
auto strip_bytes = strip_chars->Bytes();
|
auto strip_bytes = strip_chars->Bytes();
|
||||||
|
|
||||||
|
@ -792,7 +792,7 @@ function lstrip%(str: string, chars: string &default=" \t\n\r\v\f"%): string
|
||||||
|
|
||||||
// empty input string
|
// empty input string
|
||||||
if ( n == 0 )
|
if ( n == 0 )
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(s, n, 1));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(s, n, 1));
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
auto bs_chars = chars->AsString();
|
auto bs_chars = chars->AsString();
|
||||||
|
@ -801,7 +801,7 @@ function lstrip%(str: string, chars: string &default=" \t\n\r\v\f"%): string
|
||||||
if ( ! should_strip(s[i], bs_chars) )
|
if ( ! should_strip(s[i], bs_chars) )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(s + i, n - i, 1));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(s + i, n - i, 1));
|
||||||
%}
|
%}
|
||||||
|
|
||||||
## Removes all combinations of characters in the *chars* argument
|
## Removes all combinations of characters in the *chars* argument
|
||||||
|
@ -823,7 +823,7 @@ function rstrip%(str: string, chars: string &default=" \t\n\r\v\f"%): string
|
||||||
|
|
||||||
// empty input string
|
// empty input string
|
||||||
if ( n == 0 )
|
if ( n == 0 )
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(s, n, 1));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(s, n, 1));
|
||||||
|
|
||||||
int n_to_remove;
|
int n_to_remove;
|
||||||
auto bs_chars = chars->AsString();
|
auto bs_chars = chars->AsString();
|
||||||
|
@ -832,7 +832,7 @@ function rstrip%(str: string, chars: string &default=" \t\n\r\v\f"%): string
|
||||||
if ( ! should_strip(s[n - n_to_remove - 1], bs_chars) )
|
if ( ! should_strip(s[n - n_to_remove - 1], bs_chars) )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(s, n - n_to_remove, 1));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(s, n - n_to_remove, 1));
|
||||||
%}
|
%}
|
||||||
|
|
||||||
## Generates a string of a given size and fills it with repetitions of a source
|
## Generates a string of a given size and fills it with repetitions of a source
|
||||||
|
@ -854,7 +854,7 @@ function string_fill%(len: int, source: string%): string
|
||||||
|
|
||||||
dst[len - 1] = 0;
|
dst[len - 1] = 0;
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(1, byte_vec(dst), len));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(1, byte_vec(dst), len));
|
||||||
%}
|
%}
|
||||||
|
|
||||||
## Takes a string and escapes characters that would allow execution of
|
## Takes a string and escapes characters that would allow execution of
|
||||||
|
@ -894,7 +894,7 @@ function safe_shell_quote%(source: string%): string
|
||||||
|
|
||||||
dst[j++] = '"';
|
dst[j++] = '"';
|
||||||
dst[j] = '\0';
|
dst[j] = '\0';
|
||||||
return zeek::make_intrusive<zeek::StringVal>(new zeek::BroString(1, dst, j));
|
return zeek::make_intrusive<zeek::StringVal>(new zeek::String(1, dst, j));
|
||||||
%}
|
%}
|
||||||
|
|
||||||
## Finds all occurrences of a pattern in a string.
|
## Finds all occurrences of a pattern in a string.
|
||||||
|
|
|
@ -466,7 +466,7 @@ zeek::Val* Value::ValueToVal(const std::string& source, const Value* val, bool&
|
||||||
|
|
||||||
case zeek::TYPE_STRING:
|
case zeek::TYPE_STRING:
|
||||||
{
|
{
|
||||||
auto* s = new zeek::BroString((const u_char*)val->val.string_val.data, val->val.string_val.length, true);
|
auto* s = new zeek::String((const u_char*)val->val.string_val.data, val->val.string_val.length, true);
|
||||||
return new zeek::StringVal(s);
|
return new zeek::StringVal(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
16
src/zeek.bif
16
src/zeek.bif
|
@ -815,7 +815,7 @@ function paraglob_init%(v: any%) : opaque of paraglob
|
||||||
VectorVal* vv = v->AsVectorVal();
|
VectorVal* vv = v->AsVectorVal();
|
||||||
for ( unsigned int i = 0; i < vv->Size(); ++i )
|
for ( unsigned int i = 0; i < vv->Size(); ++i )
|
||||||
{
|
{
|
||||||
const BroString* s = vv->At(i)->AsString();
|
const String* s = vv->At(i)->AsString();
|
||||||
patterns.push_back(std::string(reinterpret_cast<const char*>(s->Bytes()), s->Len()));
|
patterns.push_back(std::string(reinterpret_cast<const char*>(s->Bytes()), s->Len()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1567,7 +1567,7 @@ function cat%(...%): string
|
||||||
for ( const auto& a : @ARG@ )
|
for ( const auto& a : @ARG@ )
|
||||||
a->Describe(&d);
|
a->Describe(&d);
|
||||||
|
|
||||||
BroString* s = new BroString(1, d.TakeBytes(), d.Len());
|
String* s = new String(1, d.TakeBytes(), d.Len());
|
||||||
s->SetUseFreeToDelete(true);
|
s->SetUseFreeToDelete(true);
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(s);
|
return zeek::make_intrusive<zeek::StringVal>(s);
|
||||||
|
@ -1609,7 +1609,7 @@ function cat_sep%(sep: string, def: string, ...%): string
|
||||||
v->Describe(&d);
|
v->Describe(&d);
|
||||||
}
|
}
|
||||||
|
|
||||||
BroString* s = new BroString(1, d.TakeBytes(), d.Len());
|
String* s = new String(1, d.TakeBytes(), d.Len());
|
||||||
s->SetUseFreeToDelete(true);
|
s->SetUseFreeToDelete(true);
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(s);
|
return zeek::make_intrusive<zeek::StringVal>(s);
|
||||||
|
@ -1684,7 +1684,7 @@ function fmt%(...%): string
|
||||||
return zeek::val_mgr->EmptyString();
|
return zeek::val_mgr->EmptyString();
|
||||||
}
|
}
|
||||||
|
|
||||||
BroString* s = new BroString(1, d.TakeBytes(), d.Len());
|
String* s = new String(1, d.TakeBytes(), d.Len());
|
||||||
s->SetUseFreeToDelete(true);
|
s->SetUseFreeToDelete(true);
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(s);
|
return zeek::make_intrusive<zeek::StringVal>(s);
|
||||||
|
@ -1843,7 +1843,7 @@ function type_name%(t: any%): string
|
||||||
ODesc d;
|
ODesc d;
|
||||||
t->GetType()->Describe(&d);
|
t->GetType()->Describe(&d);
|
||||||
|
|
||||||
BroString* s = new BroString(1, d.TakeBytes(), d.Len());
|
String* s = new String(1, d.TakeBytes(), d.Len());
|
||||||
s->SetUseFreeToDelete(true);
|
s->SetUseFreeToDelete(true);
|
||||||
|
|
||||||
return zeek::make_intrusive<zeek::StringVal>(s);
|
return zeek::make_intrusive<zeek::StringVal>(s);
|
||||||
|
@ -2895,7 +2895,7 @@ function hexstr_to_bytestring%(hexstr: string%): string
|
||||||
## .. zeek:see:: decode_base64
|
## .. zeek:see:: decode_base64
|
||||||
function encode_base64%(s: string, a: string &default=""%): string
|
function encode_base64%(s: string, a: string &default=""%): string
|
||||||
%{
|
%{
|
||||||
BroString* t = encode_base64(s->AsString(), a->AsString());
|
String* t = encode_base64(s->AsString(), a->AsString());
|
||||||
if ( t )
|
if ( t )
|
||||||
return zeek::make_intrusive<zeek::StringVal>(t);
|
return zeek::make_intrusive<zeek::StringVal>(t);
|
||||||
else
|
else
|
||||||
|
@ -2917,7 +2917,7 @@ function encode_base64%(s: string, a: string &default=""%): string
|
||||||
## .. zeek:see:: decode_base64_conn encode_base64
|
## .. zeek:see:: decode_base64_conn encode_base64
|
||||||
function decode_base64%(s: string, a: string &default=""%): string
|
function decode_base64%(s: string, a: string &default=""%): string
|
||||||
%{
|
%{
|
||||||
BroString* t = decode_base64(s->AsString(), a->AsString());
|
String* t = decode_base64(s->AsString(), a->AsString());
|
||||||
if ( t )
|
if ( t )
|
||||||
return zeek::make_intrusive<zeek::StringVal>(t);
|
return zeek::make_intrusive<zeek::StringVal>(t);
|
||||||
else
|
else
|
||||||
|
@ -2950,7 +2950,7 @@ function decode_base64_conn%(cid: conn_id, s: string, a: string &default=""%): s
|
||||||
return zeek::val_mgr->EmptyString();
|
return zeek::val_mgr->EmptyString();
|
||||||
}
|
}
|
||||||
|
|
||||||
BroString* t = decode_base64(s->AsString(), a->AsString(), conn);
|
String* t = decode_base64(s->AsString(), a->AsString(), conn);
|
||||||
if ( t )
|
if ( t )
|
||||||
return zeek::make_intrusive<zeek::StringVal>(t);
|
return zeek::make_intrusive<zeek::StringVal>(t);
|
||||||
else
|
else
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue