This is a good one, long but detailed.

My PVC roof vents had plastic flashing with rubber collars. They lasted about 12 years before the rubber disintegrated and rain began seeping in. I chose to replace with “old school” lead flashing/collars that should last indefinitely, but was concerned that the squirrels would gnaw on the lead and cause a new leak (the top of the lead flashing/collar is folded inside the top of the PVC to create a watertight seal, so it’s also very tempting for them).
This cap was the ideal solution for several reasons: it hides the lead from the squirrels and it has a built-in funnel that channels any rain down the very center of the roof stack pipe. It also has a heavy-duty screen cast into the plastic, which prevents any object from falling down the vent (or squirrels dropping nuts into it!). Also aesthetically pleasing as painted PVC will fade and flake in a few years, while these are heavy-duty black plastic all the way through. The screws probably don’t actually penetrate the PVC when tightened down, but will pierce the lead or whatever collar you have around it, to firmly anchor the cap. But I don’t see how any water can get in other than the extra row of holes pre-drilled all the way through the cap (we caulked the unused ones).
If you want an exact fit, it will take some attention to detail (I wanted the molded-in funnel to fit a short ways into the top of my PVC vent pipe). So I cut the cap on my mitre saw to the correct angle for the roof pitch without removing any of its length on the long side. The power saw produced a clean even edge. We test-fitted and found we needed to cut a couple of inches off of our overly-tall PVC vent pipe, then rechecked. It needed a final 1/2″ trim on the mitre saw to make a nice tight fit into the vent pipe (with the lead flashing tucked inside) with it seated against the shingles. So I went up and down the ladder a few times. Worthwhile as it fits perfectly and looks very professional.
These caps come in only two diameters — one that’s just large enough for 2″ PVC stacks (with sufficient margin for lead flashing surrounding the PVC) and a larger size for PVC greater than 2″. I used the smaller one.
Some reviews state that this will repair leaking flashing. That would be true if the leak is coming from where the existing flashing fits around the higher part of the vent pipe (which the cap covers nicely). If your leak is at the base or your existing collar is flared (such as the preformed plastic/rubber collars that I had), this straight cap obviously cannot cover and solve the leak. Nor would I trust using roofing tar to seal a hole as it will eventually dry out and crack.