well if you do it like you do with viewspace, which is
viewDir = GetFromFrustums()...
position = viewDir * depthFromDepthBuffer, your position would scale from 0 to the frustum corners
but what you want is from camera to frustum corners, so your viewdir has to be the vector from camera to corner, aka cornerPosition - cameraPosition.
so it would be
viewDir = getFromFrustum (which is the edge position - camera)
position = viewDir * depthFromDepthBuffer + cameraPosition