Close Menu
    DevStackTipsDevStackTips
    • Home
    • News & Updates
      1. Tech & Work
      2. View All

      The Psychology Of Color In UX Design And Digital Products

      August 15, 2025

      This week in AI dev tools: Claude Sonnet 4’s larger context window, ChatGPT updates, and more (August 15, 2025)

      August 15, 2025

      Sentry launches MCP monitoring tool

      August 14, 2025

      10 Benefits of Hiring a React.js Development Company (2025–2026 Edition)

      August 13, 2025

      14 secret phone codes that unlock hidden features on your Android and iPhone

      August 17, 2025

      Stop using AI for these 9 work tasks – here’s why

      August 17, 2025

      A smart sensor assessed my home’s risk of electrical fires, and I was impressed

      August 17, 2025

      I brought Samsung’s rugged Galaxy tablet on a hiking trip, and it weathered everything

      August 17, 2025
    • Development
      1. Algorithms & Data Structures
      2. Artificial Intelligence
      3. Back-End Development
      4. Databases
      5. Front-End Development
      6. Libraries & Frameworks
      7. Machine Learning
      8. Security
      9. Software Engineering
      10. Tools & IDEs
      11. Web Design
      12. Web Development
      13. Web Security
      14. Programming Languages
        • PHP
        • JavaScript
      Featured

      AI’s Hidden Thirst: The Water Behind Tech

      August 16, 2025
      Recent

      AI’s Hidden Thirst: The Water Behind Tech

      August 16, 2025

      Minesweeper game in 100 lines of pure JavaScript – easy tutorial

      August 16, 2025

      Maintaining Data Consistency with Laravel Database Transactions

      August 16, 2025
    • Operating Systems
      1. Windows
      2. Linux
      3. macOS
      Featured

      5 Best VPN for Lenovo Laptops to Enjoy the Web Safely

      August 16, 2025
      Recent

      5 Best VPN for Lenovo Laptops to Enjoy the Web Safely

      August 16, 2025

      3 Best Antivirus and Malware Protection Software

      August 16, 2025

      11 Best Antivirus Without Ads

      August 16, 2025
    • Learning Resources
      • Books
      • Cheatsheets
      • Tutorials & Guides
    Home»News & Updates»CodeSOD: Leap to the Past

    CodeSOD: Leap to the Past

    May 8, 2025

    Early in my career, I had the misfortune of doing a lot of Crystal Reports work. Crystal Reports is another one of those tools that lets non-developer, non-database savvy folks craft reports. Which, like so often happens, means that the users dig themselves incredible holes and need professional help to get back out, because at the end of the day, when the root problem is actually complicated, all the helpful GUI tools in the world can’t solve it for you.

    Michael was in a similar position as I was, but for Michael, there was a five alarm fire. It was the end of the month, and a bunch of monthly sales reports needed to be calculated. One of the big things management expected to see was a year-over-year delta on sales, and they got real cranky if the line didn’t go up. If they couldn’t even see the line, they went into a full on panic and assumed the sales team was floundering and the company was on the verge of collapse.

    Unfortunately, the report was spitting out an error: “A day number must be between 1 and the number of days in the month.”

    Michael dug in, and found this “delight” inside of a function called one_year_ago:

    
    Local StringVar yearStr  := Left({?ReportToDate}, 4);
    Local StringVar monthStr := Mid({?ReportToDate}, 5, 2); 
    Local StringVar dayStr   := Mid({?ReportToDate}, 7, 2);
    Local StringVar hourStr  := Mid({?ReportToDate}, 9, 2);
    Local StringVar minStr   := Mid({?ReportToDate}, 11, 2);
    Local StringVar secStr   := Mid({?ReportToDate}, 13, 2);
    Local NumberVar LastYear;
    
    LastYear := ToNumber(YearStr) - 1;
    YearStr := Replace (toText(LastYear),'.00' , '' );
    YearStr := Replace (YearStr,',' , '' );
    
    //DateTime(year, month, day, hour, min, sec);
    //Year + Month + Day + Hour + min + sec;  // string value
    DateTime(ToNumber(YearStr), ToNumber(MonthStr), ToNumber(dayStr), ToNumber(HourStr), ToNumber(MinStr),ToNumber(SecStr) );
    

    We’ve all seen string munging in date handling before. That’s not surprising. But what’s notable about this one is the day on which it started failing. As stated, it was at the end of the month. But which month? February. Specifically, February 2024, a leap year. Since they do nothing to adjust the dayStr when constructing the date, they were attempting to construct a date for 29-FEB-2023, which is not a valid date.

    Michael writes:

    Yes, it’s Crystal Reports, but surprisingly not having date manipulation functions isn’t amongst it’s many, many flaws. It’s something I did in a past life isn’t it??

    The fix was easy enough- rewrite the function to actually use date handling. This made a simpler, basically one-line function, using Crystal’s built in functions. That fixed this particular date handling bug, but there were plenty more places where this kind of hand-grown string munging happened, and plenty more opportunities for the report to fail.

    [Advertisement]
    ProGet’s got you covered with security and access controls on your NuGet feeds. Learn more.

    Source: Read More 

    Facebook Twitter Reddit Email Copy Link
    Previous ArticleXigmaNAS – storage NAS distribution
    Next Article openSUSE rimuove l’ambiente desktop Deepin dai suoi repository software

    Related Posts

    News & Updates

    14 secret phone codes that unlock hidden features on your Android and iPhone

    August 17, 2025
    News & Updates

    Stop using AI for these 9 work tasks – here’s why

    August 17, 2025
    Leave A Reply Cancel Reply

    For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.

    Continue Reading

    CVE-2025-40663 – i2A Cronos Stored XSS

    Common Vulnerabilities and Exposures (CVEs)

    CVE-2025-6913 – PHPGurukul Student Record System SQL Injection Vulnerability

    Common Vulnerabilities and Exposures (CVEs)

    CVE-2025-52805 – Leyka Path Traversal PHP Local File Inclusion Vulnerability

    Common Vulnerabilities and Exposures (CVEs)

    Why SMS two-factor authentication codes aren’t safe and what to use instead

    News & Updates

    Highlights

    Machine Learning

    Critical Security Vulnerabilities in the Model Context Protocol (MCP): How Malicious Tools and Deceptive Contexts Exploit AI Agents

    May 19, 2025

    The Model Context Protocol (MCP) represents a powerful paradigm shift in how large language models…

    CVE-2025-20971 – Samsung Flow Input Validation Vulnerability

    May 7, 2025

    Farmonics Onion Powder – Affordable, Premium-Quality Onion Powder Price Online in India

    June 5, 2025

    CVE-2025-55345 – Codex Symlink File Overwrite RCE

    August 13, 2025
    © DevStackTips 2025. All rights reserved.
    • Contact
    • Privacy Policy

    Type above and press Enter to search. Press Esc to cancel.