Changeset 2504 for neercs/trunk
- Timestamp:
- Jul 1, 2008, 1:26:25 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
neercs/trunk/src/grab.c
r2503 r2504 65 65 for(i = 0; i < n; i++) 66 66 { 67 68 69 { 70 71 72 67 d[i] = ptrace(PTRACE_PEEKTEXT, pid, s + i, 0); 68 if(errno) 69 { 70 perror("ptrace(PTRACE_PEEKTEXT)"); 71 return -1; 72 } 73 73 } 74 74 return 0; … … 83 83 for(i = 0; i < n / sizeof(long); i++) 84 84 { 85 86 { 87 88 89 85 if(ptrace(PTRACE_POKETEXT, pid, d + i, s[i]) == -1) 86 { 87 perror("ptrace(PTRACE_POKETEXT)"); 88 return -1; 89 } 90 90 } 91 91 return 0; … … 110 110 { 111 111 fprintf(stderr, "PTRACE_GETREGS failed\n"); 112 112 return errno; 113 113 } 114 114 … … 119 119 { 120 120 fprintf(stderr, "PTRACE_PEEKTEXT failed\n"); 121 121 return errno; 122 122 } 123 123 … … 125 125 { 126 126 fprintf(stderr, "PTRACE_POKETEXT failed\n"); 127 127 return errno; 128 128 } 129 129 … … 133 133 { 134 134 fprintf(stderr, "PTRACE_SETREGS failed\n"); 135 135 return errno; 136 136 } 137 137 … … 139 139 { 140 140 fprintf(stderr, "PTRACE_SINGLESTEP failed\n"); 141 141 return errno; 142 142 } 143 143 waitpid(pid, NULL, 0); … … 146 146 { 147 147 fprintf(stderr, "PTRACE_GETREGS failed\n"); 148 148 return errno; 149 149 } 150 150 … … 152 152 { 153 153 fprintf(stderr, "PTRACE_SETREGS failed\n"); 154 154 return errno; 155 155 } 156 156 … … 158 158 { 159 159 fprintf(stderr, "PTRACE_POKETEXT failed\n"); 160 160 return errno; 161 161 } 162 162 … … 306 306 for(i = 0; i <= 2; i++) 307 307 { 308 308 snprintf(fdstr, sizeof(fdstr), "/proc/%d/fd/%d", pid, i); 309 309 to_open[i]=0; 310 311 312 313 314 315 316 317 318 319 320 321 310 lstat(fdstr, &stat_buf); 311 if((stat_buf.st_mode & S_IRUSR) && (stat_buf.st_mode & S_IWUSR)) 312 mode = O_RDWR; 313 else if(stat_buf.st_mode & S_IWUSR) 314 mode = O_WRONLY; 315 else 316 mode = O_RDONLY; 317 318 if(stat(fdstr, &stat_buf) < 0) 319 continue; 320 321 if(!S_ISCHR(stat_buf.st_mode) || MAJOR(stat_buf.st_rdev) != UNIX98_PTY_SLAVE_MAJOR) 322 322 continue; 323 323
Note: See TracChangeset
for help on using the changeset viewer.