garble.c 885 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*
  2. * garble.c -- handles:
  3. * garble strings
  4. *
  5. */
  6. #include "common.h"
  7. #include "garble.h"
  8. #include "main.h"
  9. #define STR(x) x
  10. #ifdef S_GARBLESTRINGS
  11. #define GARBLE_BUFFERS 40
  12. unsigned char *garble_buffer[GARBLE_BUFFERS] = {
  13. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  15. };
  16. int garble_ptr = (-1);
  17. char *degarble(int len, char *g)
  18. {
  19. int i;
  20. unsigned char x = 0;
  21. garble_ptr++;
  22. if (garble_ptr == GARBLE_BUFFERS)
  23. garble_ptr = 0;
  24. if (garble_buffer[garble_ptr])
  25. free(garble_buffer[garble_ptr]);
  26. garble_buffer[garble_ptr] = calloc(1, len + 1);
  27. x = 0xFF;
  28. for (i = 0; i < len; i++) {
  29. garble_buffer[garble_ptr][i] = g[i] ^ x;
  30. x = garble_buffer[garble_ptr][i];
  31. }
  32. garble_buffer[garble_ptr][len] = 0;
  33. return (char *) garble_buffer[garble_ptr];
  34. }
  35. #endif /* S_GARBLESTRINGS */