The 28-year-old, who scored five goals in 24 League One appearances for the Saddlers last season, had continued to train with the Midlands club despite his previous deal expiring.
"I am relieved to get things sorted," he told the club's official website. "It's been a long process, but I am happy that everything is now agreed and I can concentrate on the season ahead."
Westcarr, who featured in Walsall's pre-season friendlies against Halesowen Town and Kidderminster Harriers earlier this month, added: "I feel fit and determined. I've come back in decent nick and it's been nice to get a couple of games and a goal under my belt already."
Walsall will begin the new campaign with a home game against Tranmere Rovers on Saturday, August 3.