Prośba o review projektu C z 1 roku: bot do myszki i klawiatury

Odpowiedz Nowy wątek
2019-08-12 22:36
1

Kiepski ze mnie programista, dlatego też bez porywania się z motyką na słońce chciałem zrobić coś realnego. Nie mając wielu pomysłów wybór padł na prostą "nagrywarkę i odtwarzajkę" do myszki i klawiatury.

Czy mógłby ktoś zerknąć na mój kod? Zależy mi na poznaniu swoich złych praktyk. Nie wiem czy kod jest czytelny.

Plik menu.c był pisany pod presją (deadline), więc być może on będzie najbrzydszy z wszystkich. Nie robiłem nigdy menu, więc improwizowałem i zrobiłem jakiś rekurencyjno-podobny twór obsługujący menu. :P

Najbardziej zależy mi na spojrzeniu na menu.c, smooth_cursor.c, replay.c, recording.c. Pliki .pdf były tworzone pod wymagania zaliczenia.

Krótkie nagranie: https://streamable.com/7qcb3
GH: https://github.com/Wenox/WinAuto

Jeśli chodzi o praktyczność programu, to aktualnie nie wspiera m.in.: szybkiego pisania, kilku klawiszy jednocześnie, długiego przytrzymania klawiszy. Tylko Windows.

Czy te obszerne komentarze w .h, które potrzebowałem do wygenerowania dokumentacji wywalić czy zostawić?

Jeśli ktoś mógłby krótko zerknąć na kod i podzielić się swoją wiedzą, byłbym bardzo wdzięczny.

Za każdy feedback dziękuję.

Pozostało 580 znaków

2019-08-12 23:25
4

Tak na szybko to w tym miejscu w pliku menu.c:

void chosen_recording(struct f_queue *head, struct f_queue *tail, const int hotkey_id)
{
    printf("Save recording as (i.e: myrecording.txt):\n");
    char file_name[64];
    scanf("%s", file_name);

Jest stack based buffer overflow i można by było eksploitować ten program na podstawie takiego vulna. Przy scanf pasowałoby podawać granicę do ilu bajtów program ma czytać z stdin. Np. scanf("%63s", file_name);

EDIT: Jutro jeszcze popatrzę to może napiszę coś więcej


edytowany 2x, ostatnio: Shizzer, 2019-08-12 23:37
Dzięki! - Hodor 2019-08-12 23:40

Pozostało 580 znaków

2019-08-16 22:34
0

@Shizzer: dzięki, zastosuję się do rady.

Na stacku dostałem tipa, żeby printować errory do stderr zamiast stdout. Wywalę też te underscory z definów #define _GETCURSOR 1, itd., w sumie nie wiem po co je tam wstawiałem.

Ma ktoś jeszcze jakieś wskazówki? :P

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0