Changeset 1614 for zzuf


Ignore:
Timestamp:
Jan 7, 2007, 7:34:50 PM (13 years ago)
Author:
Sam Hocevar
Message:
  • Merged chars.c and fuzz.c.
Location:
zzuf/trunk/src
Files:
2 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • zzuf/trunk/src/Makefile.am

    r1613 r1614  
    11
    22bin_PROGRAMS = zzuf
    3 zzuf_SOURCES = zzuf.c random.c random.h chars.c chars.h fd.c fd.h fuzz.c fuzz.h
     3zzuf_SOURCES = zzuf.c random.c random.h fd.c fd.h fuzz.c fuzz.h
    44zzuf_CFLAGS = -DLIBDIR=\"$(libdir)/zzuf\"
    55
     
    77libzzuf_la_SOURCES = libzzuf.c libzzuf.h fuzz.c fuzz.h debug.c debug.h \
    88                     load-fd.c load-signal.c load-stream.c load.h \
    9                      fd.c fd.h chars.c chars.h random.c random.h
     9                     fd.c fd.h random.c random.h
    1010libzzuf_la_LDFLAGS = -avoid-version -no-undefined
    1111libzzuf_la_LIBADD = @GETOPT_LIBS@ @DL_LIBS@
  • zzuf/trunk/src/fuzz.c

    r1613 r1614  
    3737#define MAGIC2 0x783bc31f
    3838
    39 static float _zz_ratio = 0.004f;
    40 static int   _zz_seed  = 0;
    41 
    42 void _zz_setseed(int seed)
    43 {
    44     _zz_seed = seed;
    45 }
    46 
    47 void _zz_setratio(float ratio)
    48 {
    49     _zz_ratio = ratio;
    50     if(_zz_ratio < 0.0f)
    51         _zz_ratio = 0.0f;
    52     else if(_zz_ratio > 5.0f)
    53         _zz_ratio = 5.0f;
     39/* Fuzzing variables */
     40static int   protect[256];
     41static int   refuse[256];
     42static float ratio = 0.004f;
     43static int   seed  = 0;
     44
     45static void readchars(int *, char const *);
     46
     47void _zz_protect(char const *list)
     48{
     49    readchars(protect, list);
     50}
     51
     52void _zz_refuse(char const *list)
     53{
     54    readchars(refuse, list);
     55}
     56
     57void _zz_setseed(int s)
     58{
     59    seed = s;
     60}
     61
     62void _zz_setratio(float r)
     63{
     64    if(r < 0.0f)
     65        r = 0.0f;
     66    else if(r > 5.0f)
     67        r = 5.0f;
     68    ratio = r;
    5469}
    5570
     
    8297
    8398            /* Add some random dithering to handle ratio < 1.0/CHUNKBYTES */
    84             _zz_srand(_zz_seed ^ chunkseed);
    85             todo = (int)((_zz_ratio * (8 * CHUNKBYTES * 1000)
    86                                                 + _zz_rand(1000)) / 1000.0);
    87             _zz_srand(_zz_seed ^ chunkseed ^ (todo * MAGIC2));
     99            _zz_srand(seed ^ chunkseed);
     100            todo = (int)((ratio * (8 * CHUNKBYTES * 1000)
     101                                             + _zz_rand(1000)) / 1000.0);
     102            _zz_srand(seed ^ chunkseed ^ (todo * MAGIC2));
    88103
    89104            while(todo--)
     
    108123            uint8_t byte = aligned_buf[j];
    109124
    110             if(_zz_protect[byte])
     125            if(protect[byte])
    111126                continue;
    112127
    113128            byte ^= fuzz->data[j % CHUNKBYTES];
    114129
    115             if(_zz_refuse[byte])
     130            if(refuse[byte])
    116131                continue;
    117132
     
    121136}
    122137
     138static void readchars(int *table, char const *list)
     139{
     140    static char const hex[] = "0123456789abcdef0123456789ABCDEF";
     141    char const *tmp;
     142    int a, b;
     143
     144    memset(table, 0, 256 * sizeof(int));
     145
     146    for(tmp = list, a = b = -1; *tmp; tmp++)
     147    {
     148        int new;
     149
     150        if(*tmp == '\\' && tmp[1] == '\0')
     151            new = '\\';
     152        else if(*tmp == '\\')
     153        {
     154            tmp++;
     155            if(*tmp == 'n')
     156                new = '\n';
     157            else if(*tmp == 'r')
     158                new = '\r';
     159            else if(*tmp == 't')
     160                new = '\t';
     161            else if(tmp[0] >= '0' && tmp[0] <= '7' && tmp[1] >= '0'
     162                     && tmp[1] <= '7' && tmp[2] >= '0' && tmp[2] <= '7')
     163            {
     164                new = tmp[2] - '0';
     165                new |= (int)(tmp[1] - '0') << 3;
     166                new |= (int)(tmp[0] - '0') << 6;
     167                tmp += 2;
     168            }
     169            else if((*tmp == 'x' || *tmp == 'X')
     170                     && tmp[1] && strchr(hex, tmp[1])
     171                     && tmp[2] && strchr(hex, tmp[2]))
     172            {
     173                new = ((strchr(hex, tmp[1]) - hex) & 0xf) << 4;
     174                new |= (strchr(hex, tmp[2]) - hex) & 0xf;
     175                tmp += 2;
     176            }
     177            else
     178                new = (unsigned char)*tmp; /* XXX: OK for \\, but what else? */
     179        }
     180        else
     181            new = (unsigned char)*tmp;
     182
     183        if(a != -1 && b == '-' && a <= new)
     184        {
     185            while(a <= new)
     186                table[a++] = 1;
     187            a = b = -1;
     188        }
     189        else
     190        {
     191            if(a != -1)
     192                table[a] = 1;
     193            a = b;
     194            b = new;
     195        }
     196    }
     197
     198    if(a != -1)
     199        table[a] = 1;
     200    if(b != -1)
     201        table[b] = 1;
     202}
     203
  • zzuf/trunk/src/fuzz.h

    r1613 r1614  
    1717 */
    1818
     19extern void _zz_protect(char const *);
     20extern void _zz_refuse(char const *);
    1921extern void _zz_setseed(int);
    2022extern void _zz_setratio(float);
     23
    2124extern void _zz_fuzz(int, uint8_t *, uint64_t);
    2225
  • zzuf/trunk/src/libzzuf.c

    r1613 r1614  
    3838#include "debug.h"
    3939#include "load.h"
    40 #include "chars.h"
    4140#include "fd.h"
    4241#include "fuzz.h"
     
    4847int   _zz_signal   = 0;
    4948int   _zz_network  = 0;
    50 
    51 /* Global tables */
    52 int   _zz_protect[256];
    53 int   _zz_refuse[256];
    5449
    5550/* Library initialisation shit */
     
    7267    tmp = getenv("ZZUF_PROTECT");
    7368    if(tmp && *tmp)
    74         _zz_readchars(_zz_protect, tmp);
     69        _zz_protect(tmp);
    7570
    7671    tmp = getenv("ZZUF_REFUSE");
    7772    if(tmp && *tmp)
    78         _zz_readchars(_zz_refuse, tmp);
     73        _zz_refuse(tmp);
    7974
    8075    tmp = getenv("ZZUF_INCLUDE");
  • zzuf/trunk/src/libzzuf.h

    r1613 r1614  
    4242extern int   _zz_network;
    4343
    44 /* Internal tables TODO: merge them and use bitmasks */
    45 extern int   _zz_protect[256];
    46 extern int   _zz_refuse[256];
    47 
    4844/* Library initialisation shit */
    4945extern void _zz_init(void) __attribute__((constructor));
  • zzuf/trunk/src/zzuf.c

    r1613 r1614  
    4040#include "libzzuf.h"
    4141#include "random.h"
    42 #include "chars.h"
    4342#include "fd.h"
    4443#include "fuzz.h"
     
    5554static void usage(void);
    5655#endif
    57 
    58 /* Global tables */
    59 int   _zz_protect[256];
    60 int   _zz_refuse[256];
    6156
    6257static struct child_list
     
    234229
    235230        if(protect)
    236             _zz_readchars(_zz_protect, protect);
     231            _zz_protect(protect);
    237232        if(refuse)
    238             _zz_readchars(_zz_refuse, protect);
     233            _zz_refuse(refuse);
    239234
    240235        _zz_fd_init();
Note: See TracChangeset for help on using the changeset viewer.