Code Monkey home page Code Monkey logo

ejudge's People

Contributors

alex65536 avatar andgein avatar andrei-ilyin avatar arsijo avatar avm avatar blackav avatar chegoryu avatar decompilation avatar dima74 avatar dkirienko avatar grikukan avatar grphil avatar hseosgit avatar nsychev avatar objatiegroba avatar ov7a avatar servb avatar shestimerov avatar tigvarts avatar vivanishin avatar vvd170501 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ejudge's Issues

Ошибка MYSQL при входе в MASTER

После обновления системы возникает следующая ошибка:

2020-04-20T19:46:43Z:info:loading contest 2 configuration file 2020-04-20T19:46:43Z:info:configuration file parsed ok mysql: SELECT config_val FROM config WHERE config_key = 'run_version' ; mysql: ALTER TABLE runs ADD COLUMN prob_uuid VARCHAR(40) DEFAULT NULL AFTER token_count 2020-04-20T19:46:44Z:error:database error: Invalid default value for 'create_time'

API ejudge

Привет. Есть ли дока к API ejudge? Видел, что API появилась в последней версии.

От проверяющей системы мне нужна только песочница. Возможно ли её использовать отдельно, либо же через API? Как это лучше сделать?

Крах ej-contests при просмотре clar message

В текущей версии в git можно в форме, в которой задают вопрос не указать, к какой задаче данный вопрос относится.

screenshot_20161030_175201

В таком случае вопрос будет отправлен жюри олимпиады, но при попытке просмотреть его в CGI-программе new-master будет происходить краш ej-contests.

screenshot_20161030_175722

Судя по всему, CSP-страничка пытается отобразить номер задачи, к которой относится clar, но такой задачи нет и происходит разименование нулевого указателя.

Пример backtrace:

Program received signal SIGSEGV, Segmentation fault.
0x00007f9786466cea in __strcmp_ssse3 () from /usr/lib/libc.so.6
(gdb) bt
#0  0x00007f9786466cea in __strcmp_ssse3 () from /usr/lib/libc.so.6
#1  0x00007f9783d793be in csp_view_priv_clar_page (ps=0x7f9783f7d138 <page_iface>, log_f=0x2666f90, 
    out_f=0x2669a40, phr=0x7ffeee5da790) at priv_clar_page.c:182
#2  0x0000000000426e8a in priv_external_action (out_f=out_f@entry=0x2669a40, phr=phr@entry=0x7ffeee5da790)
    at new_server_html.c:7062
#3  0x000000000043ae85 in privileged_entry_point (fout=fout@entry=0x2669a40, phr=phr@entry=0x7ffeee5da790)
    at new_server_html.c:7275
#4  0x0000000000441c16 in ns_handle_http_request (state=state@entry=0x1df78f0, p=p@entry=0x233c6d0, 
    fout=fout@entry=0x2669a40, phr=phr@entry=0x7ffeee5da790) at new_server_html.c:11758
#5  0x000000000041859c in cmd_http_request (state=<optimized out>, p=<optimized out>, 
    pkt_size=<optimized out>, pkt_gen=<optimized out>) at new-server.c:397
#6  0x000000000048d1a1 in handle_control_command (p=0x233c6d0, state=0x1df78f0) at server_framework.c:517
#7  nsf_main_loop (state=0x1df78f0) at server_framework.c:644
#8  0x0000000000417b53 in main (argc=<optimized out>, argv=<optimized out>) at new-server.c:838

start_cmd игнорируется в языках, где используется valgrind.

Здравствуйте.

Столкнулся с такой проблемой - в одна и та же задача, два разрешенных языка - gcc и gcc-vg. При проверке решения на языке gcc отрабатывает скрипт в start_cmd, при проверке на gcc-vg - вместо него отрабатывает valgrind, и скрипт вообще не запускается.

Потенциальный хранимый XSS в statements.xml

При выдаче условий ejudge не экранирует потенциально опасные символы (<, >). Это означает, что, получив доступа к statements.xml одного контеста достаточно для XSS-атаки.

XSS в форме авторизации

В поле "Выйти из системы [логин]" подставляется введенный пользователем логин без обработки html. Таким образом, вход под логином вида "qqq<script>alert(document.cookie);</script>" показывает куки пользователя и т.д.

Server is down error

Can't open serve-control, getting an error "Server is down. The server is down. Try again later" or "Service is not available. Please, come later."

Ejudge version 3.5.1+(GIT 57c08df), compiled 2016-03-12 18:28:48 is running on virtual box, Fedora 23-32.

Дробные оценки и собственные баллы за тест

Будет ли в следующих версиях ejudge поддержка дробной оценки за тесты? Т.к. например за задачу максимальный балл нужен 10-20, но тестов 50-100. (Точность до сотых-тысячных)

  • возможность опционального проставления собственных баллов за тест (например 0 баллов за претесты/тесты из условия, и своё количество баллов за следующие тесты (по 1 баллу, по 1.5, в зависимости от сложности теста или по другим идеям)

lasvik.ru is expired

ejudge contains following: "Веб-дизайн и AJAX-интерфейс © 2006-2018 Toto Lasvik."
Where Toto Lasvik is link to "www.lasvik.ru"
This domain is expired

Strip ejudge binaries by default

In the default configuration, ejudge binaries are built unoptimized with debug symbols. This allows a potential attacker with local shell access (e.g. due to a kernel bug, or to secure_run/suid_run being improperly configured) to easily get administrative acccess (serve-control), for example by hooking passwd_check in ej-users with gdb. If the binaries were optimized and stripped it would require much more effort (e.g. replacing the binaries with backdoored ones or manually tweaking the database).

`scripts/mcs.in` is incompatible with general sh because of double square bracket

Originally inspired by this blog post on Codeforces (in Russian).

mcs.in looks like a shell script with /bin/sh specified as a shell to run in shebang. However, it uses [[ command, which is specific to bash, zsh, korn and not supported by general shells. So, the script will fail if /bin/sh points to something non-bash compatible.

My suggestion is to fix this by either:

  1. Replacing [[ with [ or other POSIX-supported alternative.
  2. Replace shebang with #!/bin/bash

I also suspect that other scripts in the repository may suffer from the same problem.

Как избавиться от "NOTE: The file checksum has been changed!"?

Сабж. Возникает сообщение при просмотре протокола проверки посылки в ответе ("А").
Есть какой-нибудь способ пересчитать эти хэши? И вообще, при каких условиях показывается это сообщение? Тесты при этом грузятся актуальные.

Пробовал check contest settings - не помогло.

Бесконечный running на языке mcs в задаче с потестовой компиляцией

Если делать задачу с потестовой компиляцией для языка mcs, компиляция, вроде бы проходит нормально (в /home/judges/var/ej-compile.log появляются строки ...:info:Compilation sucessful соответственно количеству тестов), но потом начинается вечный running, в /home/judges/var/ej-super-run.log появляется ...:emerg:Internal: unix/fileutl.c: 463: assertion failed: buf и слетает процесс ej-super-run

Строка 463 файла fileutl.c -- это
ASSERT(buf);
который вызывается в самом начале тела функции
int
generic_write_file(char const *buf, size_t size, int flags,
char const *dir, char const *name, char const *sfx)

Проблема не_возникает при на mcs без постестовой компиляции, ни при потестовой компиляции на g++.

Всё указанное воспроизводится на ejudge 3.7.9 #1 , а также на ejudge 3.7.6+ из виртуальной машины Fedora-26-32-ejudge-20180322.ova с сайта ejudge.ru

Неправильная генерация фрагмента HTML для пользовательского меню

При генерации меню в ejudge/csp/contests/unpriv_menu.csp в пункт меню "Регистрация" (строка 21) генерируется неправильно, что приводит к неправильному отображению:
2016-02-19 23-07-45
Особенно сильно видно если изменить стили под старый интерфейс:
2016-02-19 23-21-13
Вместо
%><li class="contest_actions_item"><s:a class="menu" script="register" ac="main-page"><s:_>Registration</s:_></s:a><li>
Нужно
%><li><div class="contest_actions_item"><s:a class="menu" script="register" ac="main-page"><s:_>Registration</s:_></s:a></div><li>

Плохая вёрстка страницы просмотра регистрационной информации в мобильных браузерах

Скриншот. Подробности браузера неизвестны. Не удаётся нажать на кнопку "Участвовать" в итоге.

image

UPD: Скриншот, вероятно, сделан на устройстве "Mozilla/5.0 (Linux; Android 10; SAMSUNG SM-A307FN) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/11.1 Chrome/75.0.3770.143 Mobile Safari/537.36"

uldb_plugin_xml.c:set_user_info_field_func: странный неверно работающий код

В функции set_user_info_field_func в файле uldb_plugin_xml.c происходит что-то не то.

Функция дожна менять значение одного из полей профиля пользователя. При этом есть два случая: либо меняется базовый профиль, либо меняется профиль в одном из контестов. Соответственно функция находит нужное поле двумя if-ами: в строках 2147 и 2151.

Проблема в том, что между этими if-ами, она уже пытается использовать значение в строке 2149, чтобы проверить, не совпадает ли уже записываемое значение с имеющимся. Чтобы проверка работала, в строку 2148 добавлен код, который безусловно находит поле в профиле внутри контеста, перетирая информацию из предыдущего if-а.

Это приводит к тому, что при редактировании базового профиля через ejudge-edit-users, в последующую функцию userlist_set_user_info_field_str попадает NULL и срабатывает assert:

2018-09-19T09:20:52Z:2:emerg:Internal: userlist.c: 810: assertion failed: ui

Если я правильно понял, что должна делать эта функция и как, то для исправления необходимо удалить строку 2147 и перенести строку 2148 вниз после if-а.

После этого, правда, остается вопрос, может ли быть contest_id < 0? Обрабатываются только случай contest_id >= 0.

ejudge/uldb_plugin_xml.c

Lines 2147 to 2156 in 25f1163

if (!contest_id) ui = userlist_get_cnts0(u);
ui = userlist_get_user_info_nc(u, contest_id);
if (userlist_is_equal_user_info_field(ui, field_id, value)) return 0;
if (contest_id > 0) {
if (!(userlist_clone_user_info(u, contest_id, &ul->member_serial,
cur_time, p_cloned_flag)))
return -1;
ui = userlist_get_user_info_nc(u, contest_id);
}

Краш при создании нового контеста на основе существующего

На моем сервере на версии 3.6.2 в 100% случаев при создании нового контеста из web-интерфейса, а затем нажатии клавиши Forget Changes, ejudge падает. Иногда он даже падает при успешном создании контеста, но почему-то не всегда.

screenshot_20170430_150410

Прилагаю кусочек ej-super-server.log.

2017-04-30T11:57:38Z:info:cmd_http_request: 172773
2017-04-30T12:03:30Z:info:cmd_http_request: 47590
2017-04-30T12:03:40Z:info:cmd_http_request: 129
2017-04-30T12:03:40Z:info:cmd_http_request: 74742
*** Error in `/home/ejudge/inst-ejudge/bin/ej-super-server': double free or corruption (!prev): 0x00000000023f3d40 ***
======= Backtrace: =========
/usr/lib/libc.so.6(+0x722ab)[0x7f356a5802ab]
/usr/lib/libc.so.6(+0x7890e)[0x7f356a58690e]
/usr/lib/libc.so.6(+0x7911e)[0x7f356a58711e]
/home/ejudge/inst-ejudge/bin/ej-super-server[0x42e3d5]
/home/ejudge/inst-ejudge/bin/ej-super-server(param_free+0x76)[0x4aa496]
/home/ejudge/inst-ejudge/bin/ej-super-server(super_serve_clear_edited_contest+0x1a5)[0x41cdc5]
/home/ejudge/inst-ejudge/bin/ej-super-server[0x41e108]
/home/ejudge/inst-ejudge/bin/ej-super-server[0x41d757]
/home/ejudge/inst-ejudge/bin/ej-super-server(main+0x55f)[0x4196af]
/usr/lib/libc.so.6(__libc_start_main+0xf1)[0x7f356a52e511]
/home/ejudge/inst-ejudge/bin/ej-super-server(_start+0x2a)[0x41978a]
======= Memory map: ========
00400000-0056a000 r-xp 00000000 08:03 213                                /home/ejudge/inst-ejudge/bin/ej-super-server
00769000-0076a000 r--p 00169000 08:03 213                                /home/ejudge/inst-ejudge/bin/ej-super-server
0076a000-00772000 rw-p 0016a000 08:03 213                                /home/ejudge/inst-ejudge/bin/ej-super-server
00772000-0077a000 rw-p 00000000 00:00 0 
0239a000-023dc000 rw-p 00000000 00:00 0                                  [heap]
023dc000-0262a000 rw-p 00000000 00:00 0                                  [heap]
7f3564000000-7f3564021000 rw-p 00000000 00:00 0 
7f3564021000-7f3568000000 ---p 00000000 00:00 0 
7f3568dbf000-7f3568dd5000 r-xp 00000000 08:03 3315694                    /usr/lib/libgcc_s.so.1
7f3568dd5000-7f3568fd4000 ---p 00016000 08:03 3315694                    /usr/lib/libgcc_s.so.1
7f3568fd4000-7f3568fd5000 r--p 00015000 08:03 3315694                    /usr/lib/libgcc_s.so.1
7f3568fd5000-7f3568fd6000 rw-p 00016000 08:03 3315694                    /usr/lib/libgcc_s.so.1
7f3568fd6000-7f3568ff6000 r-xp 00000000 08:03 2360365                    /home/judges/bin/csp/super-server/cnts_edit_cur_contest_page.so
7f3568ff6000-7f35691f5000 ---p 00020000 08:03 2360365                    /home/judges/bin/csp/super-server/cnts_edit_cur_contest_page.so
7f35691f5000-7f35691f6000 r--p 0001f000 08:03 2360365                    /home/judges/bin/csp/super-server/cnts_edit_cur_contest_page.so
7f35691f6000-7f35691f7000 rw-p 00020000 08:03 2360365                    /home/judges/bin/csp/super-server/cnts_edit_cur_contest_page.so
7f35691f7000-7f35691f9000 r-xp 00000000 08:03 2382842                    /home/judges/bin/csp/super-server/create_contest_2_action.so
7f35691f9000-7f35693f8000 ---p 00002000 08:03 2382842                    /home/judges/bin/csp/super-server/create_contest_2_action.so
7f35693f8000-7f35693f9000 r--p 00001000 08:03 2382842                    /home/judges/bin/csp/super-server/create_contest_2_action.so
7f35693f9000-7f35693fa000 rw-p 00002000 08:03 2382842                    /home/judges/bin/csp/super-server/create_contest_2_action.so
7f35693fa000-7f35693fd000 r-xp 00000000 08:03 2383086                    /home/judges/bin/csp/super-server/create_contest_page.so
7f35693fd000-7f35695fc000 ---p 00003000 08:03 2383086                    /home/judges/bin/csp/super-server/create_contest_page.so
7f35695fc000-7f35695fd000 r--p 00002000 08:03 2383086                    /home/judges/bin/csp/super-server/create_contest_page.so
7f35695fd000-7f35695fe000 rw-p 00003000 08:03 2383086                    /home/judges/bin/csp/super-server/create_contest_page.so
7f35695fe000-7f3569603000 r-xp 00000000 08:03 2382847                    /home/judges/bin/csp/super-server/main_page.so
7f3569603000-7f3569802000 ---p 00005000 08:03 2382847                    /home/judges/bin/csp/super-server/main_page.so
7f3569802000-7f3569803000 r--p 00004000 08:03 2382847                    /home/judges/bin/csp/super-server/main_page.so
7f3569803000-7f3569804000 rw-p 00005000 08:03 2382847                    /home/judges/bin/csp/super-server/main_page.so
7f3569804000-7f3569acd000 r--p 00000000 08:03 3329311                    /usr/lib/locale/locale-archive
7f3569acd000-7f3569acf000 r-xp 00000000 08:03 2368383                    /home/judges/bin/csp/super-server/login_page.so
7f3569acf000-7f3569cce000 ---p 00002000 08:03 2368383                    /home/judges/bin/csp/super-server/login_page.so
7f3569cce000-7f3569ccf000 r--p 00001000 08:03 2368383                    /home/judges/bin/csp/super-server/login_page.so
7f3569ccf000-7f3569cd0000 rw-p 00002000 08:03 2368383                    /home/judges/bin/csp/super-server/login_page.so
7f3569cd0000-7f3569cdb000 r-xp 00000000 08:03 3278915                    /usr/lib/libnss_files-2.25.so
7f3569cdb000-7f3569eda000 ---p 0000b000 08:03 3278915                    /usr/lib/libnss_files-2.25.so
7f3569eda000-7f3569edb000 r--p 0000a000 08:03 3278915                    /usr/lib/libnss_files-2.25.so
7f3569edb000-7f3569edc000 rw-p 0000b000 08:03 3278915                    /usr/lib/libnss_files-2.25.so
7f3569edc000-7f3569ee2000 rw-p 00000000 00:00 0 
7f3569ee2000-7f3569eed000 r-xp 00000000 08:03 3278913                    /usr/lib/libnss_nis-2.25.so
7f3569eed000-7f356a0ec000 ---p 0000b000 08:03 3278913                    /usr/lib/libnss_nis-2.25.so
7f356a0ec000-7f356a0ed000 r--p 0000a000 08:03 3278913                    /usr/lib/libnss_nis-2.25.so
7f356a0ed000-7f356a0ee000 rw-p 0000b000 08:03 3278913                    /usr/lib/libnss_nis-2.25.so
7f356a0ee000-7f356a103000 r-xp 00000000 08:03 3278909                    /usr/lib/libnsl-2.25.so
7f356a103000-7f356a302000 ---p 00015000 08:03 3278909                    /usr/lib/libnsl-2.25.so
7f356a302000-7f356a303000 r--p 00014000 08:03 3278909                    /usr/lib/libnsl-2.25.so
7f356a303000-7f356a304000 rw-p 00015000 08:03 3278909                    /usr/lib/libnsl-2.25.so
7f356a304000-7f356a306000 rw-p 00000000 00:00 0 
7f356a306000-7f356a30d000 r-xp 00000000 08:03 3278918                    /usr/lib/libnss_compat-2.25.so
7f356a30d000-7f356a50c000 ---p 00007000 08:03 3278918                    /usr/lib/libnss_compat-2.25.so
7f356a50c000-7f356a50d000 r--p 00006000 08:03 3278918                    /usr/lib/libnss_compat-2.25.so
7f356a50d000-7f356a50e000 rw-p 00007000 08:03 3278918                    /usr/lib/libnss_compat-2.25.so
7f356a50e000-7f356a6a9000 r-xp 00000000 08:03 3279004                    /usr/lib/libc-2.25.so
7f356a6a9000-7f356a8a8000 ---p 0019b000 08:03 3279004                    /usr/lib/libc-2.25.so
7f356a8a8000-7f356a8ac000 r--p 0019a000 08:03 3279004                    /usr/lib/libc-2.25.so
7f356a8ac000-7f356a8ae000 rw-p 0019e000 08:03 3279004                    /usr/lib/libc-2.25.so
7f356a8ae000-7f356a8b2000 rw-p 00000000 00:00 0 
7f356a8b2000-7f356a8b6000 r-xp 00000000 08:03 3329228                    /usr/lib/libuuid.so.1.3.0
7f356a8b6000-7f356aab5000 ---p 00004000 08:03 3329228                    /usr/lib/libuuid.so.1.3.0
7f356aab5000-7f356aab6000 r--p 00003000 08:03 3329228                    /usr/lib/libuuid.so.1.3.0
7f356aab6000-7f356aab7000 rw-p 00004000 08:03 3329228                    /usr/lib/libuuid.so.1.3.0
7f356aab7000-7f356aaba000 r-xp 00000000 08:03 3278911                    /usr/lib/libdl-2.25.so
7f356aaba000-7f356acb9000 ---p 00003000 08:03 3278911                    /usr/lib/libdl-2.25.so
7f356acb9000-7f356acba000 r--p 00002000 08:03 3278911                    /usr/lib/libdl-2.25.so
7f356acba000-7f356acbb000 rw-p 00003000 08:03 3278911                    /usr/lib/libdl-2.25.so
7f356acbb000-7f356ace2000 r-xp 00000000 08:03 3311291                    /usr/lib/libexpat.so.1.6.2
7f356ace2000-7f356aee2000 ---p 00027000 08:03 3311291                    /usr/lib/libexpat.so.1.6.2
7f356aee2000-7f356aee4000 r--p 00027000 08:03 3311291                    /usr/lib/libexpat.so.1.6.2
7f356aee4000-7f356aee5000 rw-p 00029000 08:03 3311291                    /usr/lib/libexpat.so.1.6.2
7f356aee5000-7f356aff7000 r-xp 00000000 08:03 3278910                    /usr/lib/libm-2.25.so
7f356aff7000-7f356b1f6000 ---p 00112000 08:03 3278910                    /usr/lib/libm-2.25.so
7f356b1f6000-7f356b1f7000 r--p 00111000 08:03 3278910                    /usr/lib/libm-2.25.so
7f356b1f7000-7f356b1f8000 rw-p 00112000 08:03 3278910                    /usr/lib/libm-2.25.so
7f356b1f8000-7f356b20e000 r-xp 00000000 08:03 3283126                    /usr/lib/libz.so.1.2.11
7f356b20e000-7f356b40d000 ---p 00016000 08:03 3283126                    /usr/lib/libz.so.1.2.11
7f356b40d000-7f356b40e000 r--p 00015000 08:03 3283126                    /usr/lib/libz.so.1.2.11
7f356b40e000-7f356b40f000 rw-p 00016000 08:03 3283126                    /usr/lib/libz.so.1.2.11
7f356b40f000-7f356b432000 r-xp 00000000 08:03 3279005                    /usr/lib/ld-2.25.so
7f356b599000-7f356b620000 rw-p 00000000 00:00 0 
7f356b630000-7f356b631000 rw-p 00000000 00:00 0 
7f356b631000-7f356b632000 r--p 00022000 08:03 3279005                    /usr/lib/ld-2.25.so
7f356b632000-7f356b633000 rw-p 00023000 08:03 3279005                    /usr/lib/ld-2.25.so
7f356b633000-7f356b634000 rw-p 00000000 00:00 0 
7ffedfc4e000-7ffedfc6f000 rw-p 00000000 00:00 0                          [stack]
7ffedfd0e000-7ffedfd10000 r--p 00000000 00:00 0                          [vvar]
7ffedfd10000-7ffedfd12000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]

Deleting contest

Hello!
How can I delete a contest?

Please, make such function so users can make it automatically.

Master может создать слишком большой clar, что приводит к недоступности турнира

Пользователь с правами master в контесте написал комментарий к коду размером 81788 байт через интерфейс master. Система позволила написать ему такой большой комментарий, и внесла его в базу. Кажется, только в таблицу clars, но не в таблицу clartexts.

Потом контест выгрузился. При попытке загрузить этот контест получались следующие ошибки:

Contest is not available
The contest is temporarily not available. Please, retry the request a bit later.

Additional information about this error:

2019-08-12T06:54:33Z:info:loading contest 36513 configuration file
2019-08-12T06:54:33Z:info:configuration file parsed ok
mysql: SELECT config_val FROM config WHERE config_key = 'run_version' ;
mysql: SELECT * FROM runheaders WHERE contest_id = 36513 ;
mysql: SELECT * FROM runs WHERE contest_id=36513 ORDER BY run_id ;
mysql: SELECT config_val FROM config WHERE config_key = 'clar_version' ;
mysql: SELECT * FROM clars WHERE contest_id=36513 ORDER BY clar_id;
2019-08-12T06:54:33Z:error:database error: invalid value of field size

Для исправления ошибки пришлось исправлять записи в базе MySQL.

Первая команда, сдавшая задачу, на Virtual ACM

В ejudge 3.7 появилась новая функция, которая подсвечивает команду, получившую первый OK по каждой задаче. Однако подсветка работает некорректно в режиме Virtual ACM, так как выбирается первая сдача по астрономическому времени, а не по времени в турнире.

Например, на картинке по задаче B первый OK был получен в 0:15 в турнире, но он был сделан командной, которая писала турнир позже по астрономическому времени.

screenshot_20171001_120229

Ejudge with docker

Hi @blackav !

I would be nice if docker file will be added to this project, for example one user can easily install ejudge with one command

personal_date_penalty request

Если какой-либо участник имеет personal_deadline, то нужна возможность указать его персональный penalty. То есть нужен конфигурационный параметр задачи для определения персонального штрафа.

NASM-x86 Remote Code Execution [Уязвимость]

Nasm-x86 позволяет запускать код с возможностью вызова системных вызовов и других программ.

Пример кода:

SECTION .DATA
	hello:     db 'Hello world!',10
	helloLen:  equ $-hello

SECTION .TEXT
	GLOBAL main

main:

xor edx, edx
push edx
mov esi, esp


; строка /bin//ls
push edx
push 0x736c2f2f 
push 0x6e69622f
mov ebx, esp

; Блок 5
push edx
push ebx
mov ecx, esp
xor eax, eax
mov al,11
int 0x80

2018-12-30 11 33 06

Лучше всего будет составить whitelist список вызовов доступных процессу.

Пустые поля настройки задачи записываются в конфиг.

Задаю чекер проверки стиля в соответствующем поле раздела настройки абстрактной задачи (Compiling -> Style checker name:). Остальные поля (Source header file, Source footer file) оставляю пустыми.
После сохранения настроек в конфигурацинном файле serve.cfg в разделе абстрактной задачи
добавляются две записи с пустыми значениями
source_header=""
source_footer=""
Теперь при проверке задачи выпадате ошибка Check failed с сообщением о том, что source_header не найден.
Приходится вручную удалять эти две строки из файла serve.cfg. После этого все работает.

Аналогичная проблема с полем Internal name задачи.

Редактирование поля comment из contest.xml в веб-интерфейсе

На данный момент, насколько я понимаю, поле comment из xml-файла с настройками задачи можно редактировать только через правку этого файла на сервере, что не очень удобно.

В веб-интерфейсе комментарии к контестам отображаются в serve-control, но при редактировании настроек контеста поменять комментарий нельзя.

Ignore success time in penalty calculation не работает

После обновления до версии ejudge 3.7.4 (2018-01-10 11:48:07) в итоговой таблице перестал
срабатывать флаг Ignore success time in penalty calculation.

Не смторя на то, что он установлен, в таблице при подсчете penalty все равно учитывается время засчитанной отправки.

Subtasks on Ejudge

Hi, I have installed Ejudge in Fedora Linux and everything works fine, but as I see on most other judges there are subtasks and solving problems, which have subtasks is more interesting, is there any way to create subtasks on Ejudge? Thanks in advance!

При установке параметра variable_full_score добавляется параметр score_tokenized

При установке опции "Allow variable score for full solution?" в YES (конфигурационный параметр
variable_full_score) одновременно в конфигурационный файл добавляется параметр score_tokenized, то есть опция "Score only tokenized submits?" автоматом устанавливается в YES. Соответственно, с этой опцией для обычного контеста в таблице результатов ничего не отображается, ни автоматически, ни вручную заданный баллы за задачу

Приходится вручную в файле serve.cfg удалять параметр score_tokenized. После этого в итоговой таблице результатов отображаются установленные вручную баллы и подсчитывается итог.

Статус SE для питона

При возникновении исключения в программе, написанной на питоне, или при ошибке синтаксиса (когда тоже выкидывается исключение интерпретатором) результатом проверки будет SE, хотя по идее там должен быть либо RT, либо CE соответственно.

Эта проблема возникает из-за того, что при выводе стека вызовов происходит чтение системных файлов, что запрещено модулем безопасности.

Просмотр исходного кода программы должен помечать комментарии к коду, как прочитанные

Участник получил комментарий к коду, в результате у него есть комментарии в форме сообщения, отмеченные, как непрочитанные.

Если участник открыл исходный код страницы, то он увидел эти комментарии. Между тем сообщения продолжают висеть, как "непрочитанные".

Issue: просмотр исходного кода сабмита должен отмечать все комментарии к этому сабмиту, как прочитанные.

Удалить необходимость нажимать на кнопку "Создать учётную запись" для начала регистрации

В интернете уже давным давно при нажатии на кнопку "Регистрация" сразу открывается страница создания новой учётной записи.

В Ejudge реализована крайне неочевидная система, когда необходимо нажать на "Регистрацию", а после этого на "Создать учётную запись". Ещё в 8 классе я столкнулся с этой крайней неочевидностью Ejudge и за всю мою жизнь это была единственная платформа, где мне понадобилось читать гайд как зарегистрироваться, что явно показывает неочевидность данного интерфейса.

Прошу переработать интерфейс, так чтобы нажатие на кнопку "Регистрация" сразу перенаправляло к странице создания учётной записи.

Как обновить данные из mуsql?

Подключился к mysql напрямую, изменил данные. Если читаю из mysql - обновленные данные вижу, из веб-интерфейса и ejudge-edit-users - не вижу этих изменений. В ejudge есть какой кэш промежуточный? Как заставить его перечитать данные из базы?

Performance issues

During ACM/ICPC contest nobody was able to connect the server, and after several hours nothing has changed.
Please design a mechanism for a no-time service last successful state restoring.
Or if you have a better thoughts, please implement those ASAP.

With best regards,
ACM team Master Minds.

Компиляция под отдельным пользователем [RFI] [УЯЗВИМОСТЬ]

Компилировать под основным пользователем опасно, так как с помощью директив #include и .incbin вредоносный код может прочитать любые файлы системы, в том числе настройки задач, тесты и логи ejudge, содержащие админские куки. Компиляцию следует производить под отдельным пользователем или в песочнице.

Setrlimit on child process

In file reuse_exec.c declaration of task_Start is unsafe. As described here child process can change limit by calling setrlimit. This can cause cancelling limitations that are in the task statement

Ejudge раскрывает часть информации о закрытых тестах

Ejudge поддерживает опцию separate_user_score в настройках турнира. При установке open_tests в конфиге задачи это позволяет полностью убрать упоминание о некоторых тестах из протокола проверки. Однако в текущий момент существует небольшая утечка информации о закрытых тестах.
А именно, система не показывает результат проверки до тех пор, пока тестирование не завершено полностью. Таким образом, недобросовестный участник узнает астрономическое время проверки на всех тестах, в том числе скрытых. Зная также процессорное время тестирования на нескрытых тестах, можно предположить суммарное время исполнения на скрытых. Из этого можно делать определенные выводы. Например, если мы знаем что в одной из скрытых групп 20 тестов, ограничение по времени 1 секунда, а тестирование на скрытых тестах шло больше 20 секунд, то наверное эта группа была пройдена.

Не запускается версия 3.7.8+ после обновления из github

Обновился отсюда и пересобрал версию 3.7.8+. После этого при выполнении команды
./ejudge-control start

все зависает вот на такой строке

2018-10-24T15:03:46Z:info:ej-super-server 3.7.8+ (GIT 0002312) #1, compiled 2018-10-24 17:15:09

после чего ни один из клиентов не запускается, за исключением serve-control

После запуска всех прописаных в ejudge-control.c в функции start ej-файлов вручную все заработало.

Параллельное тесирование на многоядерном процессоре. версия 3.*

https://ejudge.ru/wiki/index.php/%D0%9F%D0%B0%D1%80%D0%B0%D0%BB%D0%BB%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5
Вот тут подробно написано, что и как делать для параллельного тестирования

Но при запуске ej-super-run он только сообщает, сколько процессов сейчас работает
image

с xml конфигурациями тоже ничего не получилось

Как его запускать, с какими параметрами?

ps: Зато получилось распределить вычисления на несколько узлов

Заморозка таблица при дорешивании

Заморозка таблицы участников при дорешивании для контестов по системе OLYMPIAD больше не работает. Теперь все участники (а не только судьи) видят в итоговой таблице результаты с учётом посылок в дорешку, даже несмотря на то что в заголовке стоит "заморожено"

clang + sanitizer

Пытаюсь подобрать альтернативу g++-vg, т.к. он очень медленный.

Самый перспективный вариант - clang с sanitizer'ами.
https://github.com/google/sanitizers
https://clang.llvm.org/docs/AddressSanitizer.html
Пока удалось только заставить работать address sanitizer.
Для этого в флагах компиляции поставил -fsanitize=address -g -fno-omit-frame-pointer
И добавил start_env для linux_shared: start_env = "ASAN_OPTIONS=symbolize=0:detect_leaks=0"
(кстати, это окружение можно где-нибудь через пользовательский интерфейс установить?)

Какие-то ошибки работы с памятью удается обнаружить, но есть проблемы:

  1. LeakSanitizer does not work under ptrace (strace, gdb, etc) - из-за этого пришлось поставить detect_leaks=0.
  2. При попытке вывести стек с именем файла/номером строки - security violation, из-за того что вызывается llvm-symbolizer. Поэтому symbolize=0
  3. undefined sanitizer вообще не работает, т.к. ему не дают доступ к памяти.

В связи с этим вопрос - есть ли какой-нибудь опыт по внедрению санитайзеров? Или, возможно, какие-нибудь идеи, как решить возникшие проблемы?

Feature request: Аргументы командной строки на задачу

Сейчас аргументы командной строки можно задать только на тест (по крайней мере, как я понял из документации).

Если аргументы одинаковые для всех тестов - то делать конфиг на каждый тест муторно (хоть это и решается скриптом).

Предложение: сделать у задачи настройку params, которая применяется ко всем тестам. (В абстрактную задачу это тоже можно добавить).

При этом предлагаю если этот параметр есть и у теста, и у задачи, передавать сначала аргументы от задачи, потом от теста.
Это может пригодиться если аргументы мало отличаются, например 5 одинаковых для всех тестов, а 6 отличается от теста к тесту.

Invalid JSON is received on action=problem-status-json

{ "ok" : true, "result": { "server_time": 1560716114, "problem": { "id": 1, "short_name": "A", "long_name": "Олимпиада", "type": 0, "full_score": 100, "use_stdin": true, "use_stdout": true, "combined_stdin": true, "combined_stdout": true, "team_enable_rep_view": true, "team_enable_ce_view": true, "ignore_compile_errors": true, "real_time_limit_ms": 5000, "time_limit_ms": 2000, "test_score": 1, "run_penalty": 0, "disqualified_penalty": 1, "input_file": input.txt, "output_file": output.txt, "enable_max_stack_size": true, "max_vm_size": "268435456", "max_stack_size": "268435456", "is_statement_avaiable": true, "est_stmt_size": 4096 }, "problem_status": { "is_viewable" : true, "is_submittable" : false, "is_tabable" : true, "is_solved" : true, "best_run" : 6530, "best_score" : 100, "all_attempts" : 1, "eff_attempts" : 1 } } }
The offending lines are lines 23 and 24:
"input_file": input.txt, "output_file": output.txt,

Неправильные права доступа на каталоги компиляции

Если включена компиляция под отдельным пользователем, то новые каталоги для обмена данными с компиляцией создаются с такими правами:

$ ls -l
итого 12
drwxr-sr-x 2 ejudge ejcompile 4096 окт 17 14:02 dir
drwxr-sr-x 2 ejudge ejcompile 4096 окт 17 14:02 in
drwxr-sr-x 2 ejudge ejcompile 4096 окт 17 14:02 out
$ pwd
/home/judges/compile/var/compile/000942/status

То есть пользователь ejcompile в эти каталоги ничего писать не умеет.
Каталог report аналогично.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.