garble.c 815 B

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