Nathan Lynch <nath...@linux.ibm.com> writes:
> Michael Ellerman <m...@ellerman.id.au> writes:
>
>> +static int search_proc_maps(char *needle, unsigned long *low, unsigned long 
>> *high)
>
>                                ^^ const?
>                                
>> +{
>> +    unsigned long start, end;
>> +    static char buf[4096];
>> +    char name[128];
>> +    FILE *f;
>> +    int rc = -1;
>> +
>> +    f = fopen("/proc/self/maps", "r");
>> +    if (!f) {
>> +            perror("fopen");
>> +            return -1;
>> +    }
>> +
>> +    while (fgets(buf, sizeof(buf), f)) {
>> +            rc = sscanf(buf, "%lx-%lx %*c%*c%*c%*c %*x %*d:%*d %*d %127s\n",
>> +                        &start, &end, name);
>
> I suspect it doesn't matter in practice for this particular test, but
> since this looks like a generally useful function that could gain users
> in the future: does this spuriously fail if the matching line straddles
> a 4096-byte boundary? Maybe fscanf(3) should be used instead?

Or maybe I should read the fgets man page more closely :-)

  "Reading stops after an EOF or a newline."

Sorry for the noise.

Reply via email to