mirror of https://github.com/google/oss-fuzz.git
339 lines
6.0 KiB
Protocol Buffer
Executable File
339 lines
6.0 KiB
Protocol Buffer
Executable File
/*
|
|
* Copyright (C) 2019 Google Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
syntax = "proto3";
|
|
|
|
message Misc {
|
|
oneof misc_oneof {
|
|
string comment = 1;
|
|
ProcessingInstruction inst = 2;
|
|
}
|
|
}
|
|
|
|
message PEReference {
|
|
string name = 1;
|
|
}
|
|
|
|
message ElementDecl {
|
|
enum ContentSpec {
|
|
EMPTY = 0;
|
|
ANY = 1;
|
|
FUZZ = 2;
|
|
MIXED = 3;
|
|
CHILDREN = 4;
|
|
}
|
|
string name = 1;
|
|
ContentSpec spec = 2;
|
|
repeated string cdata = 3;
|
|
}
|
|
|
|
message AttrType {
|
|
enum Type {
|
|
CDATA = 0;
|
|
ID = 1;
|
|
IDREF = 2;
|
|
IDREFS = 3;
|
|
ENTITY = 4;
|
|
ENTITIES = 5;
|
|
NMTOKEN = 6;
|
|
NMTOKENS = 7;
|
|
}
|
|
Type ty = 1;
|
|
}
|
|
|
|
message EnumeratedType {
|
|
repeated string names = 1;
|
|
}
|
|
|
|
message AttrListDecl {
|
|
string name = 1;
|
|
AttrType atype = 2;
|
|
EnumeratedType etype = 3;
|
|
DefaultDecl def = 4;
|
|
}
|
|
|
|
message ExternalId {
|
|
enum Type {
|
|
SYSTEM = 0;
|
|
PUBLIC = 1;
|
|
FUZZ = 2;
|
|
}
|
|
Type type = 1;
|
|
string system = 2;
|
|
string pub = 3;
|
|
}
|
|
|
|
message AttValue {
|
|
enum Type {
|
|
ENTITY = 0;
|
|
CHAR = 1;
|
|
FUZZ = 2;
|
|
}
|
|
Type type = 1;
|
|
repeated string value = 2;
|
|
}
|
|
|
|
message DefaultDecl {
|
|
enum Type {
|
|
REQUIRED = 0;
|
|
IMPLIED = 1;
|
|
FIXED = 2;
|
|
FUZZ = 3;
|
|
}
|
|
Type type = 1;
|
|
AttValue att = 2;
|
|
}
|
|
|
|
message AttDef {
|
|
// TODO: Add enumerated type
|
|
enum Type {
|
|
CDATA = 0;
|
|
ID = 1;
|
|
IDREF = 2;
|
|
IDREFS = 3;
|
|
ENTITY = 4;
|
|
ENTITIES = 5;
|
|
NMTOKEN = 6;
|
|
NMTOKENS = 7;
|
|
FUZZ = 8;
|
|
}
|
|
string name = 1;
|
|
Type type = 2;
|
|
DefaultDecl def = 3;
|
|
}
|
|
|
|
message AttListDecl {
|
|
string name = 1;
|
|
repeated AttDef attdefs = 2;
|
|
}
|
|
|
|
message NotationDecl {
|
|
string name = 1;
|
|
oneof notation_oneof {
|
|
ExternalId ext = 2;
|
|
string pub = 3;
|
|
string fuzz = 4;
|
|
}
|
|
}
|
|
|
|
message EntityValue {
|
|
enum Type {
|
|
ENTITY = 0;
|
|
CHAR = 1;
|
|
PEREF = 2;
|
|
FUZZ = 3;
|
|
}
|
|
Type type = 1;
|
|
repeated string name = 2;
|
|
}
|
|
|
|
message NDataDecl {
|
|
string name = 1;
|
|
}
|
|
|
|
message EntityDef {
|
|
oneof entity_oneof {
|
|
ExternalId ext = 1;
|
|
EntityValue val = 2;
|
|
}
|
|
NDataDecl ndata = 3;
|
|
}
|
|
|
|
message PEDef {
|
|
oneof pedef_oneof {
|
|
EntityValue val = 1;
|
|
ExternalId id = 2;
|
|
}
|
|
}
|
|
|
|
message EntityDecl {
|
|
enum Type {
|
|
GEDECL = 0;
|
|
PEDECL = 1;
|
|
}
|
|
Type type = 1;
|
|
string name = 2;
|
|
EntityDef ent = 3;
|
|
PEDef pedef = 4;
|
|
}
|
|
|
|
message ConditionalSect {
|
|
enum Type {
|
|
INCLUDE = 0;
|
|
IGNORE = 1;
|
|
FUZZ = 2;
|
|
}
|
|
Type type = 1;
|
|
ExtSubsetDecl ext = 2;
|
|
// TODO: Make this recursive
|
|
// See https://www.w3.org/TR/xml/#NT-conditionalSect
|
|
repeated string ignores = 3;
|
|
}
|
|
|
|
message OneExtSubsetDecl {
|
|
oneof extsubset_oneof {
|
|
MarkupDecl m = 1;
|
|
ConditionalSect c = 2;
|
|
}
|
|
}
|
|
|
|
message ExtSubsetDecl {
|
|
repeated OneExtSubsetDecl decls = 1;
|
|
}
|
|
|
|
message MarkupDecl {
|
|
oneof markup_oneof {
|
|
ElementDecl e = 1;
|
|
AttListDecl a = 2;
|
|
NotationDecl n = 3;
|
|
Misc m = 4;
|
|
EntityDecl entity = 5;
|
|
ExtSubsetDecl ext = 6;
|
|
}
|
|
}
|
|
|
|
message DocTypeDecl {
|
|
string name = 1;
|
|
ExternalId ext = 2;
|
|
repeated MarkupDecl mdecl = 3;
|
|
}
|
|
|
|
message Prolog {
|
|
XmlDeclaration decl = 1;
|
|
DocTypeDecl doctype = 2;
|
|
repeated Misc misc = 3;
|
|
}
|
|
|
|
message KeyValue {
|
|
enum XmlNamespace {
|
|
ATTRIBUTES = 0;
|
|
BASE = 1;
|
|
CATALOG = 2;
|
|
ID = 3;
|
|
LANG = 4;
|
|
LINK = 5;
|
|
SPACE = 6;
|
|
SPECIAL = 7;
|
|
TEST = 8;
|
|
FUZZ = 9;
|
|
}
|
|
XmlNamespace type = 1;
|
|
string key = 2;
|
|
string value = 3;
|
|
}
|
|
|
|
message ProcessingInstruction {
|
|
string name = 1;
|
|
repeated KeyValue kv = 2;
|
|
}
|
|
|
|
message CData {
|
|
string data = 1;
|
|
}
|
|
|
|
message Content {
|
|
// TODO: Add other content types
|
|
oneof content_oneof {
|
|
string str = 1;
|
|
Element e = 2;
|
|
CData c = 3;
|
|
}
|
|
}
|
|
|
|
message Element {
|
|
enum Type {
|
|
PREDEFINED = 0;
|
|
FUZZ = 1;
|
|
}
|
|
enum Id {
|
|
XIINCLUDE = 0;
|
|
XIFALLBACK = 1;
|
|
// Attributes of xinclude
|
|
XIHREF = 2;
|
|
XIPARSE = 3;
|
|
XIXPOINTER = 4;
|
|
XIENCODING = 5;
|
|
XIACCEPT = 6;
|
|
XIACCEPTLANG = 7;
|
|
}
|
|
Type type = 1;
|
|
Id id = 2;
|
|
string name = 3;
|
|
repeated KeyValue kv = 4;
|
|
Content content = 5;
|
|
string childprop = 6;
|
|
}
|
|
|
|
message VersionNum {
|
|
enum Type {
|
|
STANDARD = 0;
|
|
FUZZ = 1;
|
|
}
|
|
Type type = 1;
|
|
uint64 major = 2;
|
|
uint64 minor = 3;
|
|
}
|
|
|
|
message Encodings {
|
|
enum Enc {
|
|
BIG5 = 0;
|
|
EUCJP = 1;
|
|
EUCKR = 2;
|
|
GB18030 = 3;
|
|
ISO2022JP = 4;
|
|
ISO2022KR = 5;
|
|
ISO88591 = 6;
|
|
ISO88592 = 7;
|
|
ISO88593 = 8;
|
|
ISO88594 = 9;
|
|
ISO88595 = 10;
|
|
ISO88596 = 11;
|
|
ISO88597 = 12;
|
|
ISO88598 = 13;
|
|
ISO88599 = 14;
|
|
SHIFTJIS = 15;
|
|
TIS620 = 16;
|
|
USASCII = 17;
|
|
UTF8 = 18;
|
|
UTF16 = 19;
|
|
UTF16BE = 20;
|
|
UTF16LE = 21;
|
|
WINDOWS31J = 22;
|
|
WINDOWS1255 = 23;
|
|
WINDOWS1256 = 24;
|
|
FUZZ = 25;
|
|
}
|
|
Enc name = 1;
|
|
string fuzz = 2;
|
|
}
|
|
|
|
message XmlDeclaration {
|
|
VersionNum ver = 1;
|
|
Encodings enc = 2;
|
|
enum Standalone {
|
|
YES = 0;
|
|
NO = 1;
|
|
}
|
|
Standalone standalone = 3;
|
|
string fuzz = 4;
|
|
}
|
|
|
|
message XmlDocument {
|
|
Prolog p = 1;
|
|
repeated Element e = 2;
|
|
}
|
|
|
|
package xmlProtoFuzzer; |