Changeset 2504
- Timestamp:
- 07/01/08 01:26:25 (5 years ago)
- File:
-
- 1 edited
-
neercs/trunk/src/grab.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
neercs/trunk/src/grab.c
r2503 r2504 65 65 for(i = 0; i < n; i++) 66 66 { 67 d[i] = ptrace(PTRACE_PEEKTEXT, pid, s + i, 0);68 if(errno)69 { 70 perror("ptrace(PTRACE_PEEKTEXT)");71 return -1;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 if(ptrace(PTRACE_POKETEXT, pid, d + i, s[i]) == -1)86 { 87 perror("ptrace(PTRACE_POKETEXT)");88 return -1;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 return errno;112 return errno; 113 113 } 114 114 … … 119 119 { 120 120 fprintf(stderr, "PTRACE_PEEKTEXT failed\n"); 121 return errno;121 return errno; 122 122 } 123 123 … … 125 125 { 126 126 fprintf(stderr, "PTRACE_POKETEXT failed\n"); 127 return errno;127 return errno; 128 128 } 129 129 … … 133 133 { 134 134 fprintf(stderr, "PTRACE_SETREGS failed\n"); 135 return errno;135 return errno; 136 136 } 137 137 … … 139 139 { 140 140 fprintf(stderr, "PTRACE_SINGLESTEP failed\n"); 141 return errno;141 return errno; 142 142 } 143 143 waitpid(pid, NULL, 0); … … 146 146 { 147 147 fprintf(stderr, "PTRACE_GETREGS failed\n"); 148 return errno;148 return errno; 149 149 } 150 150 … … 152 152 { 153 153 fprintf(stderr, "PTRACE_SETREGS failed\n"); 154 return errno;154 return errno; 155 155 } 156 156 … … 158 158 { 159 159 fprintf(stderr, "PTRACE_POKETEXT failed\n"); 160 return errno;160 return errno; 161 161 } 162 162 … … 306 306 for(i = 0; i <= 2; i++) 307 307 { 308 snprintf(fdstr, sizeof(fdstr), "/proc/%d/fd/%d", pid, i);308 snprintf(fdstr, sizeof(fdstr), "/proc/%d/fd/%d", pid, i); 309 309 to_open[i]=0; 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 else316 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)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.
