if you pass 0x as signature, the signer value falls back to msg.sender, it looks like you might be trying to send the transaction through the safe transaction builder or from a wallet that's not authorized to spend the allowance
0x
msg.sender