garble.c 832 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. unsigned char x = 0;
  18. garble_ptr++;
  19. if (garble_ptr == GARBLE_BUFFERS)
  20. garble_ptr = 0;
  21. if (garble_buffer[garble_ptr])
  22. free(garble_buffer[garble_ptr]);
  23. garble_buffer[garble_ptr] = (unsigned char *) my_calloc(1, len + 1);
  24. x = 0xFF;
  25. for (int i = 0; i < len; i++) {
  26. garble_buffer[garble_ptr][i] = g[i] ^ x;
  27. x = garble_buffer[garble_ptr][i];
  28. }
  29. garble_buffer[garble_ptr][len] = 0;
  30. return (char *) garble_buffer[garble_ptr];
  31. }