garble.c 867 B

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