Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 0b0f4bb in mainline


Ignore:
Timestamp:
2010-11-26T01:28:09Z (11 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master
Children:
062fde4
Parents:
9ac2013
Message:
  • correct printf() formatting strings and corresponding arguments
  • add explicit overflow checking to printf-related code
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/console/cmd.c

    r9ac2013 r0b0f4bb  
    554554        }
    555555       
     556        unsigned int _len = (unsigned int) len;
     557        if ((_len != len) || (((int) _len) < 0)) {
     558                printf("Command length overflow\n");
     559                return 1;
     560        }
     561       
    556562        for (cur = cmd_head.next; cur != &cmd_head; cur = cur->next) {
    557563                cmd_info_t *hlp;
     
    559565               
    560566                spinlock_lock(&hlp->lock);
    561                 printf("%-*s %s\n", len, hlp->name, hlp->description);
     567                printf("%-*s %s\n", _len, hlp->name, hlp->description);
    562568                spinlock_unlock(&hlp->lock);
    563569        }
     
    668674                fnc = (unative_t (*)(void)) arch_construct_function(&fptr,
    669675                    (void *) symaddr, (void *) cmd_call0);
    670                 printf("Calling %s() (%p)\n", symbol, symaddr);
     676                printf("Calling %s() (%p)\n", symbol, (void *) symaddr);
    671677                printf("Result: %#" PRIxn "\n", fnc());
    672678                interrupts_restore(ipl);
     
    685691         */
    686692       
    687         size_t i;
     693        unsigned int i;
    688694        for (i = 0; i < config.cpu_count; i++) {
    689695                if (!cpus[i].active)
     
    697703                        irq_spinlock_unlock(&thread->lock, true);
    698704                       
    699                         printf("cpu%" PRIs ": ", i);
     705                        printf("cpu%u: ", i);
    700706                       
    701707                        thread_ready(thread);
     
    703709                        thread_detach(thread);
    704710                } else
    705                         printf("Unable to create thread for cpu%" PRIs "\n", i);
     711                        printf("Unable to create thread for cpu%u\n", i);
    706712        }
    707713       
     
    731737
    732738                ipl = interrupts_disable();
    733                 fnc = (unative_t (*)(unative_t, ...)) arch_construct_function(&fptr, (void *) symaddr, (void *) cmd_call1);
    734                 printf("Calling f(%#" PRIxn "): %p: %s\n", arg1, symaddr, symbol);
     739                fnc = (unative_t (*)(unative_t, ...))
     740                    arch_construct_function(&fptr, (void *) symaddr,
     741                    (void *) cmd_call1);
     742                printf("Calling f(%#" PRIxn "): %p: %s\n", arg1,
     743                    (void *) symaddr, symbol);
    735744                printf("Result: %#" PRIxn "\n", fnc(arg1));
    736745                interrupts_restore(ipl);
     
    765774
    766775                ipl = interrupts_disable();
    767                 fnc = (unative_t (*)(unative_t, unative_t, ...)) arch_construct_function(&fptr, (void *) symaddr, (void *) cmd_call2);
     776                fnc = (unative_t (*)(unative_t, unative_t, ...))
     777                    arch_construct_function(&fptr, (void *) symaddr,
     778                    (void *) cmd_call2);
    768779                printf("Calling f(%#" PRIxn ", %#" PRIxn "): %p: %s\n",
    769                        arg1, arg2, symaddr, symbol);
     780                       arg1, arg2, (void *) symaddr, symbol);
    770781                printf("Result: %#" PRIxn "\n", fnc(arg1, arg2));
    771782                interrupts_restore(ipl);
     
    800811
    801812                ipl = interrupts_disable();
    802                 fnc = (unative_t (*)(unative_t, unative_t, unative_t, ...)) arch_construct_function(&fptr, (void *) symaddr, (void *) cmd_call3);
    803                 printf("Calling f(%#" PRIxn ",%#" PRIxn ", %#" PRIxn "): %p: %s\n",
    804                        arg1, arg2, arg3, symaddr, symbol);
     813                fnc = (unative_t (*)(unative_t, unative_t, unative_t, ...))
     814                    arch_construct_function(&fptr, (void *) symaddr,
     815                    (void *) cmd_call3);
     816                printf("Calling f(%#" PRIxn ",%#" PRIxn ", %#" PRIxn "): %p: %s\n",
     817                       arg1, arg2, arg3, (void *) symaddr, symbol);
    805818                printf("Result: %#" PRIxn "\n", fnc(arg1, arg2, arg3));
    806819                interrupts_restore(ipl);
     
    875888       
    876889        if (rc == ENOENT)
    877                 printf("Symbol %s not found.\n", argv->buffer);
     890                printf("Symbol %s not found.\n", (char *) argv->buffer);
    878891        else if (rc == EINVAL)
    879892                printf("Invalid address.\n");
     
    884897                if (pointer)
    885898                        addr = *(uintptr_t *) addr;
    886                 printf("Writing %#" PRIx64 " -> %p\n", arg1, addr);
     899                printf("Writing %#" PRIx32" -> %p\n", arg1, (void *) addr);
    887900                *(uint32_t *) addr = arg1;
    888901        } else
     
    11721185        }
    11731186       
     1187        unsigned int _len = (unsigned int) len;
     1188        if ((_len != len) || (((int) _len) < 0)) {
     1189                printf("Command length overflow\n");
     1190                return;
     1191        }
     1192       
    11741193        for (test = tests; test->name != NULL; test++)
    1175                 printf("%-*s %s%s\n", len, test->name, test->desc, (test->safe ? "" : " (unsafe)"));
    1176        
    1177         printf("%-*s Run all safe tests\n", len, "*");
     1194                printf("%-*s %s%s\n", _len, test->name, test->desc,
     1195                    (test->safe ? "" : " (unsafe)"));
     1196       
     1197        printf("%-*s Run all safe tests\n", _len, "*");
    11781198}
    11791199
  • uspace/app/tester/vfs/vfs1.c

    r9ac2013 r0b0f4bb  
    105105        if (cnt < 0)
    106106                return "write() failed";
    107         TPRINTF("Written %d bytes\n", cnt);
     107        TPRINTF("Written %zd bytes\n", cnt);
    108108       
    109109        if (lseek(fd0, 0, SEEK_SET) != 0)
     
    116116                        return "read() failed";
    117117               
    118                 TPRINTF("Read %d bytes: \".*s\"\n", cnt, cnt, buf);
     118                int _cnt = (int) cnt;
     119                if (_cnt != cnt) {
     120                        /* Count overflow, just to be sure. */
     121                        TPRINTF("Read %zd bytes\n", cnt);
     122                } else {
     123                        TPRINTF("Read %zd bytes: \"%.*s\"\n", cnt, _cnt, buf);
     124                }
    119125        }
    120126       
  • uspace/app/top/screen.c

    r9ac2013 r0b0f4bb  
    150150        screen_get_pos(&c, &r);
    151151       
    152         if (c < cols)
    153                 printf("%.*s", cols - c - 1, str);
     152        if (c < cols) {
     153                int pos = cols - c - 1;
     154                printf("%.*s", pos, str);
     155        }
    154156}
    155157
    156158static inline void print_global_head(data_t *data)
    157159{
    158         printf("top - %02lu:%02lu:%02lu up %u days, %02u:%02u:%02u, load average:",
     160        printf("top - %02lu:%02lu:%02lu up "
     161            "%" PRIun " days, %02" PRIun ":%02" PRIun ":%02" PRIun ", "
     162            "load average:",
    159163            data->hours, data->minutes, data->seconds,
    160164            data->udays, data->uhours, data->uminutes, data->useconds);
     
    171175static inline void print_task_summary(data_t *data)
    172176{
    173         printf("tasks: %u total", data->tasks_count);
     177        printf("tasks: %zu total", data->tasks_count);
    174178        screen_newline();
    175179}
     
    211215        }
    212216       
    213         printf("threads: %u total, %u running, %u ready, %u sleeping, %u lingering, "
    214             "%u other, %u invalid",
     217        printf("threads: %zu total, %zu running, %zu ready, "
     218            "%zu sleeping, %zu lingering, %zu other, %zu invalid",
    215219            total, running, ready, sleeping, lingering, other, invalid);
    216220        screen_newline();
     
    295299                order_suffix(task->virtmem, &virtmem, &virtmem_suffix);
    296300               
    297                 printf("%-8" PRIu64 " %9u %8" PRIu64 "%c ", task->task_id,
     301                printf("%-8" PRIu64 " %9zu %8" PRIu64 "%c ", task->task_id,
    298302                    task->threads, virtmem, virtmem_suffix);
    299303                print_percent(perc->virtmem, 2);
Note: See TracChangeset for help on using the changeset viewer.