/* * Copyright 2014 The Chromium OS Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. * * This is a very simple binary editor, used to create corrupted structs for * testing. It copies stdin to stdout, replacing bytes beginning at the given * offset with the specified 8-bit values. * * There is NO conversion checking of the arguments. */ #include <stdint.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { uint32_t offset, curpos, curarg; int c; if (argc < 3) { fprintf(stderr, "Need two or more args: OFFSET VAL [VAL...]\n"); return 1; } offset = (uint32_t)strtoul(argv[1], 0, 0); curarg = 2; for ( curpos = 0; (c = fgetc(stdin)) != EOF; curpos++) { if (curpos == offset && curarg < argc) { c = (uint8_t)strtoul(argv[curarg++], 0, 0); offset++; } fputc(c, stdout); } return 0; }