Files
clamav/libclamav/msxml_parser.h
Micah Snyder 71ff5c579c Remove libxml2 dead code
As of ClamAV 0.105, libxml2 is required.
There is also no option to disable PCRE support.

This commit removes the dead code associated with the old build
option.
2024-04-13 12:34:15 -04:00

90 lines
2.4 KiB
C

/*
* Extract component parts of various MS XML files (e.g. MS Office 2003 XML Documents)
*
* Copyright (C) 2013-2024 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
* Copyright (C) 2007-2013 Sourcefire, Inc.
*
* Authors: Kevin Lin
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the
* Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef __MSXML_PARSER_H
#define __MSXML_PARSER_H
#if HAVE_CONFIG_H
#include "clamav-config.h"
#endif
#include "others.h"
#ifdef _WIN32
#ifndef LIBXML_WRITER_ENABLED
#define LIBXML_WRITER_ENABLED 1
#endif
#endif
#include <libxml/xmlreader.h>
#define MSXML_RECLEVEL_MAX 20
#define MSXML_JSON_STRLEN_MAX 128
/* reader usage flags */
#define MSXML_FLAG_JSON 0x1
#define MSXML_FLAG_WALK 0x2
struct msxml_ictx;
struct attrib_entry {
const char *key;
const char *value;
};
struct key_entry {
/* how */
#define MSXML_IGNORE 0x0
#define MSXML_IGNORE_ELEM 0x1
#define MSXML_SCAN_CB 0x2
#define MSXML_SCAN_B64 0x4
#define MSXML_COMMENT_CB 0x8
/* where */
#define MSXML_JSON_ROOT 0x10
#define MSXML_JSON_WRKPTR 0x20
#define MSXML_JSON_MULTI 0x40
#define MSXML_JSON_TRACK (MSXML_JSON_ROOT | MSXML_JSON_WRKPTR)
/* what */
#define MSXML_JSON_COUNT 0x100
#define MSXML_JSON_VALUE 0x200
#define MSXML_JSON_ATTRIB 0x400
const char *key;
const char *name;
uint32_t type;
};
typedef cl_error_t (*msxml_scan_cb)(int fd, const char *filepath, cli_ctx *ctx, int num_attribs, struct attrib_entry *attribs, void *cbdata);
typedef cl_error_t (*msxml_comment_cb)(const char *comment, cli_ctx *ctx, void *wrkjobj, void *cbdata);
struct msxml_ctx {
msxml_scan_cb scan_cb;
void *scan_data;
msxml_comment_cb comment_cb;
void *comment_data;
struct msxml_ictx *ictx;
};
cl_error_t cli_msxml_parse_document(cli_ctx *ctx, xmlTextReaderPtr reader, const struct key_entry *keys, const size_t num_keys, uint32_t flags, struct msxml_ctx *mxctx);
#endif /* __MSXML_PARSER_H */