mirror of
https://github.com/wxWidgets/wxWidgets.git
synced 2026-08-18 18:22:01 +08:00
Check for bugs in wxFileConfig. Closes #26597. Signed-off-by: Arthur Chan <arthur.chan@adalogics.com>
62 lines
1.8 KiB
C++
62 lines
1.8 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: tests/fuzz/fileconf.cpp
|
|
// Purpose: wxFileConfig parsing code fuzzing test
|
|
// Author: Arthur Chan
|
|
// Created: 2026-06-15
|
|
// Copyright: (c) 2026 Arthur Chan
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "wx/log.h"
|
|
#include "wx/mstream.h"
|
|
#include "wx/fileconf.h"
|
|
|
|
#if wxDEBUG_LEVEL
|
|
|
|
static void exitAssertHandler(const wxString& file,
|
|
int line,
|
|
const wxString& func,
|
|
const wxString& cond,
|
|
const wxString& msg);
|
|
|
|
static volatile wxAssertHandler_t
|
|
origAssertHandler = wxSetAssertHandler(exitAssertHandler);
|
|
|
|
static void exitAssertHandler(const wxString& file,
|
|
int line,
|
|
const wxString& func,
|
|
const wxString& cond,
|
|
const wxString& msg)
|
|
{
|
|
origAssertHandler(file, line, func, cond, msg);
|
|
|
|
exit(1);
|
|
}
|
|
|
|
#endif // wxDEBUG_LEVEL
|
|
|
|
extern "C" int LLVMFuzzerTestOneInput(const wxUint8 *data, size_t size)
|
|
{
|
|
wxLogNull noLog;
|
|
|
|
wxMemoryInputStream mis(data, size);
|
|
// The wxInputStream ctor reads the whole stream and runs the INI parser.
|
|
wxFileConfig config(mis);
|
|
|
|
// Walk the parsed entries and groups to exercise the read-back paths.
|
|
wxString name;
|
|
long index;
|
|
for ( bool more = config.GetFirstEntry(name, index);
|
|
more;
|
|
more = config.GetNextEntry(name, index) ) {
|
|
wxString value;
|
|
config.Read(name, &value);
|
|
}
|
|
|
|
for ( bool more = config.GetFirstGroup(name, index);
|
|
more;
|
|
more = config.GetNextGroup(name, index) ) {
|
|
}
|
|
|
|
return 0;
|
|
}
|