Is leap year calculation omitted?
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 48/100
Piste de recherche
Start with plugins/sudoers/getdate.c and trace how Convert computes the Julian day from EPOCH through the requested year. Compare that loop with the leap year check already used for DaysInMonth, then inspect or run the date parsing tests mentioned by the project. Done means leap days are handled consistently across century years and the relevant tests pass.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Hi,all
in plugins/sudoers/getdate.c
static time_t
Convert(time_t Month, time_t Day, time_t Year, time_t Hours, time_t Minutes,
time_t Seconds, MERIDIAN Meridian, DSTMODE DSTmode)
{
static int DaysInMonth[12] = {
31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
struct tm tm;
time_t tod;
time_t Julian;
int i;
if (Year < 0)
Year = -Year;
if (Year < 69)
Year += 2000;
else if (Year < 100) {
Year += 1900;
if (Year < EPOCH)
Year += 100;
}
DaysInMonth[1] = Year % 4 == 0 && (Year % 100 != 0 || Year % 400 == 0)
? 29 : 28;
/* 32-bit time_t cannot represent years past 2038 */
if (Year < EPOCH || (sizeof(time_t) == sizeof(int) && Year > 2038)
|| Month < 1 || Month > 12
/* Lint fluff: "conversion from long may lose accuracy" */
|| Day < 1 || Day > DaysInMonth[--Month])
return -1;
for (Julian = Day - 1, i = 0; i < Month; i++)
Julian += DaysInMonth[i];
for (i = EPOCH; i < Year; i++)
Julian += 365 + (i % 4 == 0);
Julian *= SECSPERDAY;
Julian += yyTimezone * 60L;
if ((tod = ToSeconds(Hours, Minutes, Seconds, Meridian)) < 0)
return -1;
Julian += tod;
if (DSTmode == DSTon
|| (DSTmode == DSTmaybe && localtime_r(&Julian, &tm) && tm.tm_isdst))
Julian -= 60 * 60;
return Julian;
for (i = EPOCH; i < Year; i++)
Julian += 365 + (i % 4 == 0); //Only %4 was calculated. %100 and %400 were not calculated
Should it be Julian += 365 + (i % 4 == 0 && (i % 100 != 0 || i % 400 == 0)); ?
- Langage dominant
- C
- Étoiles
- 1.7k
- Forks
- 306
- Merge moyen
- 1 j 8 h
- PR mergées (30 j)
- 24
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de sudo-project/sudo
-
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
sudo-project/sudo#583 ·
Les mainteneurs répondent en général sous 1 jour
-
Signal forwarded to the command is lost when it arrives between fork() and execve() of the commandOuverte
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
sudo-project/sudo#566 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 52/100
sudo-project/sudo#553 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
sudo-project/sudo#552 ·
Les mainteneurs répondent en général sous 1 jour
-
Documentation text overflows container instead of wrappingPeut-être à nouveau libre @BittuBarnwal7479 l’a pris il y a 131 jours, et aucune pull request n’est ouverte. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 58/100
sudo-project/sudo#547 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de sudo-project/sudo
Issues similaires
-
vim.filetype.match() prefixes a URL buffer name with the cwd before passing it to filetype functionsOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 73/100
Les mainteneurs répondent en général sous 1 jour
-
compilation errorOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
COVESA/dlt-daemon#925 · 1 réaction ·
-
stream_curl: retry_count never resets after a successful reconnect, so long sequential streams die after 5 dropsPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
mpv-player/mpv#18728 ·
Les mainteneurs répondent en général sous 1 jour
-
followup Prio 📌
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
cyrusimap/cyrus-imapd#6640 ·
Les mainteneurs répondent en général sous 2 jours