diff -uNr at-3.2.1/atd.c at-3.2.1.mod/atd.c --- at-3.2.1/atd.c 2019-08-04 15:16:16.000000000 +0300 +++ at-3.2.1.mod/atd.c 2020-01-02 20:33:14.106959504 +0200 @@ -92,7 +92,7 @@ /* Macros */ #define BATCH_INTERVAL_DEFAULT 60 -#define CHECK_INTERVAL 3600 +#define CHECK_INTERVAL 5 /* Global variables */ @@ -321,7 +321,7 @@ * fact and return. */ PRIV_START - rc = link(filename, newname); + rc = symlink(filename, newname); PRIV_END if (rc == -1) { syslog(LOG_WARNING, "could not lock job %lu: %m", jobno); @@ -397,7 +397,7 @@ * NFS and works with local file systems. It's not clear where * the bug is located. -Joey */ - sprintf(fmt, "#!/bin/sh\n# atrun uid=%%d gid=%%d\n# mail %%%ds %%d", + sprintf(fmt, "#!@TERMUX_PREFIX@/bin/sh\n# atrun uid=%%d gid=%%d\n# mail %%%ds %%d", mailsize ); if (fscanf(stream, fmt, @@ -409,9 +409,11 @@ pabort("illegal mail name %.300s in job %8lu (%.300s)", mailname, jobno, filename); +#ifndef __ANDROID__ if (nuid != uid) pabort("Job %8lu (%.500s) - userid %d does not match file uid %d", jobno, filename, nuid, uid); +#endif /* We are now committed to executing this script. Unlink the * original. @@ -435,11 +437,14 @@ if ((fd_out = open(filename, O_RDWR | O_CREAT | O_EXCL, S_IWUSR | S_IRUSR)) < 0) perr("Cannot create output file"); + +#ifndef __ANDROID__ PRIV_START if (fchown(fd_out, uid, ngid) == -1) syslog(LOG_WARNING, "Warning: could not change owner of output file for job %li to %i:%i: %s", jobno, uid, ngid, strerror(errno)); PRIV_END +#endif write_string(fd_out, "Subject: Output from your job "); write_string(fd_out, jobbuf); @@ -503,6 +508,7 @@ } #endif +#ifndef __ANDROID__ if (initgroups(pentry->pw_name, pentry->pw_gid)) perr("Cannot initialize the supplementary group access list"); @@ -511,11 +517,12 @@ if (setuid(uid) < 0) perr("Cannot set user id"); +#endif chdir("/"); - if (execle("/bin/sh", "sh", (char *) NULL, nenvp) != 0) - perr("Exec failed for /bin/sh"); + if (execle("@TERMUX_PREFIX@/bin/sh", "sh", (char *) NULL, nenvp) != 0) + perr("Exec failed for @TERMUX_PREFIX@/bin/sh"); PRIV_END } @@ -571,6 +578,7 @@ PRIV_START +#ifndef __ANDROID__ if (initgroups(pentry->pw_name, pentry->pw_gid)) perr("Cannot initialize the supplementary group access list"); @@ -579,6 +587,7 @@ if (setuid(uid) < 0) perr("Cannot set user id"); +#endif chdir ("/"); @@ -804,6 +813,7 @@ * daemon is fine. */ +#ifndef __ANDROID__ if ((pwe = getpwnam(DAEMON_USERNAME)) == NULL) perr("Cannot get uid for " DAEMON_USERNAME); @@ -815,6 +825,7 @@ daemon_gid = ge->gr_gid; RELINQUISH_PRIVS_ROOT(daemon_uid, daemon_gid) +#endif #ifndef LOG_CRON #define LOG_CRON LOG_DAEMON