Advertisement
Guest User

Untitled

a guest
Feb 25th, 2020
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1.  
  2. ubuntuvm@ubuntuvm-VirtualBox:~/stack_overflow$ gdb so_ans -q
  3. Reading symbols from so_ans...done.
  4. (gdb) list 1
  5. 1 #include <stdio.h>
  6. 2 #include <stdlib.h>
  7. 3 #include <string.h>
  8. 4
  9. 5 int check_answer(char *ans) {
  10. 6
  11. 7 int ans_flag = 0;
  12. 8 char ans_buf[16];
  13. 9
  14. 10 strcpy(ans_buf, ans);
  15. (gdb) list
  16. 11
  17. 12 if (strcmp(ans_buf, "forty-two") == 0)
  18. 13 ans_flag = 1;
  19. 14
  20. 15 return ans_flag;
  21. 16
  22. 17 }
  23. 18
  24. 19 int main(int argc, char *argv[]) {
  25. 20
  26. (gdb) list
  27. 21 if (argc < 2) {
  28. 22 printf("Usage: %s <answer>\n", argv[0]);
  29. 23 exit(0);
  30. 24 }
  31. 25 if (check_answer(argv[1])) {
  32. 26 printf("Right answer!\n");
  33. 27 } else {
  34. 28 printf("Wrong answer!\n");
  35. 29 }
  36. 30
  37. (gdb) break 10
  38. Breakpoint 1 at 0x400660: file ans_check.c, line 10.
  39. (gdb) break 15
  40. Breakpoint 2 at 0x40068f: file ans_check.c, line 15.
  41. (gdb) run 11111111111111111111111111111
  42. Starting program: /home/ubuntuvm/stack_overflow/so_ans 11111111111111111111111111111
  43.  
  44. Breakpoint 1, check_answer (ans=0x7fffffffe367 '1' <repeats 29 times>)
  45. at ans_check.c:10
  46. 10 strcpy(ans_buf, ans);
  47. (gdb)
  48. (gdb) x/s ans_buf
  49. 0x7fffffffdec0: "\001"
  50. (gdb) x/xw &ans_flag
  51. 0x7fffffffdedc: 0x00000000
  52. (gdb) c
  53. Continuing.
  54.  
  55. Breakpoint 2, check_answer (ans=0x7fffffffe367 '1' <repeats 29 times>)
  56. at ans_check.c:15
  57. 15 return ans_flag;
  58. (gdb) c
  59. Continuing.
  60. Right answer!
  61. [Inferior 1 (process 2766) exited with code 016]
  62. (gdb) x/s ans_buf
  63. No symbol "ans_buf" in current context.
  64. (gdb) exit
  65. Undefined command: "exit". Try "help".
  66. (gdb) quit
  67. ubuntuvm@ubuntuvm-VirtualBox:~/stack_overflow$ clear
  68.  
  69. ubuntuvm@ubuntuvm-VirtualBox:~/stack_overflow$ gdb so_ans -q
  70. Reading symbols from so_ans...done.
  71. (gdb) list 1
  72. 1 #include <stdio.h>
  73. 2 #include <stdlib.h>
  74. 3 #include <string.h>
  75. 4
  76. 5 int check_answer(char *ans) {
  77. 6
  78. 7 int ans_flag = 0;
  79. 8 char ans_buf[16];
  80. 9
  81. 10 strcpy(ans_buf, ans);
  82. (gdb) list
  83. 11
  84. 12 if (strcmp(ans_buf, "forty-two") == 0)
  85. 13 ans_flag = 1;
  86. 14
  87. 15 return ans_flag;
  88. 16
  89. 17 }
  90. 18
  91. 19 int main(int argc, char *argv[]) {
  92. 20
  93. (gdb) list
  94. 21 if (argc < 2) {
  95. 22 printf("Usage: %s <answer>\n", argv[0]);
  96. 23 exit(0);
  97. 24 }
  98. 25 if (check_answer(argv[1])) {
  99. 26 printf("Right answer!\n");
  100. 27 } else {
  101. 28 printf("Wrong answer!\n");
  102. 29 }
  103. 30
  104. (gdb) break 10
  105. Breakpoint 1 at 0x400660: file ans_check.c, line 10.
  106. (gdb) break 15
  107. Breakpoint 2 at 0x40068f: file ans_check.c, line 15.
  108. (gdb) run 11111111111111111111111111111
  109. Starting program: /home/ubuntuvm/stack_overflow/so_ans 11111111111111111111111111111
  110.  
  111. Breakpoint 1, check_answer (ans=0x7fffffffe367 '1' <repeats 29 times>)
  112. at ans_check.c:10
  113. 10 strcpy(ans_buf, ans);
  114. (gdb) x/s ans_buf
  115. 0x7fffffffdec0: "\001"
  116. (gdb) x/xw &ans_flag
  117. 0x7fffffffdedc: 0x00000000
  118. (gdb) c
  119. Continuing.
  120.  
  121. Breakpoint 2, check_answer (ans=0x7fffffffe367 '1' <repeats 29 times>)
  122. at ans_check.c:15
  123. 15 return ans_flag;
  124. (gdb) x/s ans_buf
  125. 0x7fffffffdec0: '1' <repeats 29 times>
  126. (gdb) x/xw &ans_flag
  127. 0x7fffffffdedc: 0x00000031
  128. (gdb)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement