sigalrm_seen = FALSE;
ALARM(timeout);
- rc = connect(cctx->sock, (struct sockaddr *)(&sockun), sizeof(sockun));
+ rc = connect(cctx->sock, (struct sockaddr *) &sockun, sizeof(sockun));
ALARM_CLR(0);
if (sigalrm_seen)
{
static void *
readsock_open(const uschar * filename, uschar ** errmsg)
{
-client_conn_ctx * cctx = store_get(sizeof(*cctx), FALSE);
+client_conn_ctx * cctx = store_get(sizeof(*cctx), GET_UNTAINTED);
cctx->sock = -1;
cctx->tls_ctx = NULL;
DEBUG(D_lookup) debug_printf_indent("readsock: allocated context\n");
if (!cctx->tls_ctx)
#endif
{
- FILE * fp = fdopen(cctx->sock, lf.do_shutdown ? "rb" : "wb");
+ FILE * fp = fdopen(cctx->sock, "rb");
+ if (!fp)
+ {
+ log_write(0, LOG_MAIN|LOG_PANIC, "readsock fdopen: %s\n", strerror(errno));
+ goto out;
+ }
ALARM(timeout);
yield = cat_file(fp, NULL, eol);
}