bqio, Вы память под buf не выделяете. Это указатель на случайную память. Может ваш колбак и пишет туда данные, но потом настоящий хозяин этой памяти там все переписывает.
Проверьте еще, а вызывается ли у вас write_callback вообще. Вставьте туда printf какой-нибудь для отладки.
Потом, я не уверен, что вообще эта программа делать должна и как работает curl, но может быть данные, полученные такми методом, нельзя выводить как строку. Может они с нулевого байта начинаются и printf считает. что получил пустую строку.
bqio, Вы выделили память, malloc, условно говоря, вернул вам адресс 0x1234000. Потом вы в переменную ptr записали TEST_STR, которая является указателем на константную строку, лежащую по адресу, допустим, 0x00FF12CE.
Теперь ptr указывает на 0x00FF12CE, а выделенная память по адресу 0x1234000 потеряна навсегда.
Если вы хотите записать в выделенную память строку, то вам надо воспользоваться strcpy или memcpy.
Ну и учитите, что длина вашей строки - 4 байта: 3 циферки и терминирующий байт '\0' на конце.
DDD, какой брутфорс? Если символы подряд, то проверка в тупую - самое быстрое, что может быть вообще. Никакой регексп с этим тривиальным линейным алгоритмом соревноваться не сможет даже.
;
тоже считается командой.