|
|
1.1 ! root 1: #include <stdio.h> ! 2: #include <sys/types.h> ! 3: #include <a.out.h> ! 4: char *malloc(); ! 5: main(argc, argv) ! 6: char **argv; ! 7: { ! 8: char *memt, *memd; ! 9: struct exec a; ! 10: ! 11: argc--, argv++; ! 12: while (argc > 0) { ! 13: close(0); ! 14: if (open(argv[0], 0) < 0) ! 15: perror(argv[0]); ! 16: else { ! 17: read(0, &a, sizeof(a)); ! 18: if (a.a_magic != 0413) ! 19: fprintf(stderr, "%s: %o file\n", argv[0], a.a_magic); ! 20: else { ! 21: memt = malloc(a.a_text); ! 22: memd = malloc(a.a_data); ! 23: lseek(0, (long)1024, 0); ! 24: read(0, memt, a.a_text); ! 25: read(0, memd, a.a_data); ! 26: close(1); ! 27: if (creat(argv[0], 0777) < 0) ! 28: perror(argv[0]); ! 29: else { ! 30: a.a_magic = 0410; ! 31: a.a_syms = 0; ! 32: write(1, &a, sizeof (a)); ! 33: write(1, memt, a.a_text); ! 34: write(1, memd, a.a_data); ! 35: free(memt); ! 36: free(memd); ! 37: } ! 38: fprintf(stderr, "%s: fixed\n", argv[0]); ! 39: } ! 40: } ! 41: argc--, argv++; ! 42: } ! 43: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.