From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5967 invoked by alias); 4 May 2017 10:55:57 -0000 Mailing-List: contact elfutils-devel-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Post: List-Help: List-Subscribe: Sender: elfutils-devel-owner@sourceware.org Received: (qmail 5949 invoked by uid 89); 4 May 2017 10:55:55 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.99.2 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.7 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy= X-Spam-Status: No, score=-25.7 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on sourceware.org X-Spam-Level: X-HELO: EUR02-HE1-obe.outbound.protection.outlook.com Received: from mail-eopbgr10107.outbound.protection.outlook.com (HELO EUR02-HE1-obe.outbound.protection.outlook.com) (40.107.1.107) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 04 May 2017 10:55:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qtcompany.onmicrosoft.com; s=selector1-qt-io; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=6RzMAJtLWs2dCpcG0gKETF4dUuLCcjgxNbH8RzSqjuE=; b=BLyDWhpt34EIDyzVSpS2jRFovltwjlBPGZQdWccyjy7et7lYZd3o1EFmFs2Y21Rj/AF571WSQvXKO2OriRGCRUaa7A05+pXDJFfocoDPL2YWOnqkK/KM2rNExjLGQS8ZUfVAQwob+zfBUXHIwsL/uZh7vlOazcmFkqjt4Q07fMg= Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=qt.io; Received: from [10.9.78.56] (62.220.2.194) by AMSPR02MB230.eurprd02.prod.outlook.com (2a01:111:e400:8022::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1061.12; Thu, 4 May 2017 10:55:53 +0000 From: Ulf Hermann Subject: [PATCH] Close files before renaming or unlinking them To: Message-ID: <7ab29de8-4fb6-7d52-ff0a-4a325ab5e8b1@qt.io> Date: Thu, 04 May 2017 14:30:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [62.220.2.194] X-ClientProxiedBy: HE1PR0402CA0012.eurprd04.prod.outlook.com (2603:10a6:3:d0::22) To AMSPR02MB230.eurprd02.prod.outlook.com (2a01:111:e400:8022::17) X-MS-Office365-Filtering-Correlation-Id: f1bd5e1a-21b4-451d-9015-08d492dc228d X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:AMSPR02MB230; X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB230;3:m3qIN2jnJ+YO0p/iXbCkFfAAZg5hpBkj7bm5EbxxB7lABaxuBYsydXLRhlnoiDfukzFP3dFrE+hXjtCz4UWzA/qpKlqfkyVQJQ6rtLL+QGQqLcb+l5XRYu553iD7bSBaAR0V6eUDvffd8WQhreb/8YGC1L3sv2IDFAAyliml+Icp5t9zZuN5e7EcF3OHTCGX6nGxHpchS56JKYHgu+AiwkdcZvQp9BqAR/bUknmDMEDZ9fTsTplil6FixLIsV7Fb/DgQrdHcDqX6T6cBLdsxRhH2UZqGsbziYOHKpqlKjy6jR+5PC6Vz9j0RP+6BwRD9+BXCMj7XT7VDbvlZ63WWyQ==;25:2/5+YAA+b2OuvSKCRX6My2bdcoGprAU4lmtEddKDsjI1/yZVM22Szh+bwt2Pkns128xAb86hRz2zy76ritpABYcHLsFkGAFOstwHI1F7ft3nluW8yqKAA3wfIJDNCc7ku3FWuc/XqcEHgpFDz1PYXPWts7oS8W9i6FGDJqd1JjnnKNpn+Y7qtsHMp8+xFgT733en/UVB68ex7H+nl3QKnIFbuF4SWGBdZB7bUx+YB1rkiZgrD/pSSueXi5/5yyiHaUluvB8Ny1IqAIt9pBWTogZCzr7WxyFDjOKIdffzaRmdzlCNPedkbn11b/mnaCl8yQCYJT8UgyxjCDWzywrkUA6JEtS17SqjFtJnH+S1kenMbbVCDgddnVen4ZMkQwxadEcIre3BOkBCKbT+yxFomWYHRxHizUZylfiMxoqDa+OyaGLgHMLXqnifYra1CFgLthh9ztQqklCUSqbMmfnC3A== X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB230;31:I3PNyzOVykjdNbRsWVN0dYofYdI2ycoFLWzEZ7WRSwfJG1ivFJ5wm4Ravnl1LQykkzqdViqrKudAd9W9IUhD0GUbMyOCYWoZExT9CCP9BdpNTP9yf+yRrQ/FTMmZoTLamcSUQR/IRcFECa4yIdLL1iqMo3iaTZET+DvJgZIMVOB8A9PXruXxMTus1krtIWOG97TQzcVacYotmqsTLrOQc94NJciwg1t7pyALu5ZVfDP7YhhTXSvqIXSp+KDmtPQOnPZoa/mtgdk9Fzeld3LS8Q==;20:dg1iM6sRi2+k8vaM2YoZ7t/h9APO7H8uht+EHGpZNyi/iV5xkzurAqNz4d5qnfTAnbSAIDLdEYlMtsDdxtMwdoKAWoXZuaLkc0PXQPt8z8BaFd3Ha2kVAZZUrKJmv/C6br4HsvyJshZWNzQ+xwqomanKDZ9ZRUsq6Kdq4uBngKZ0OQf6vqBn1d4SANkbLqd7kYlpH3c+Hl4bV0QppKGZLrduuH+ID3yIKWEVnKYtli3dwR0IEZ1sBq4sa9AoFWF2 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(6041248)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123564025)(20161123560025)(6072148);SRVR:AMSPR02MB230;BCL:0;PCL:0;RULEID:;SRVR:AMSPR02MB230; X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB230;4:lDy82GHn2YuBzfW6SJf8UGIiqijdj86mHRjPz6IxDm+QIPl+1g0Yiriwu03X7ciSIBcC5P/Zr9nMNfxCovsTyTt6M3UJ6Ekv425es+ohpVL1u+8L4RtBS5h+xTGqfdPb7sTc2Fg7E8KLf2+SvYAtHEGDdiBpfUQCRjVQckRdX2yXxFoLN9vO3SIx/IB8zc/PAts4oMPtT7ptznzGOd3z19fx7eNA4s5UmhjQ/zkBkt1hDry2xX3zetff08NOYLk64WgGrhuIC9FxB3U9Lh4D+Uivf+/KuRXcpaPPDsVY0GlQPMGr9wGRRjdrC4OqmrHo5Wf9xR/+RB0BAR7tH3qpxNzGW0kykBdjUYSyhtOrl+XKXgxoAoWjiQ4TuPrzGXZhyh4/dPhcrUd/kDat4m+KtYUg/6btYKO+btI4UPUCjk89WvQ5XG12b0bgQITlAm85DgyG9wxGFow4AkIrTcIdHrtSZ/4mCIoC0qDY3hnMUS0q1u2VdcAZ63AzhTRLEHJalU7/fTeUWPemGyGLRngIQUQwnc1J+MqtuLlRQ0C4MFYAikXksmL/nxCvgNtIimJQQoSdzIbJ1UYNBVI2y8o5CffRjnv63Y3NaXIXgh686WdtKXTZMyWFrV8QKnqhZLeYCZqzoGFY49OxpkionBvu+2ncDhareZrH+kVBnUcNIFnT3/05S6z7YI5IGI0kbDlIaxQsdH1JItbuAoKdh+WyJSfPISHrUijPTaNNNwMdWFrAQsG0hrAm5wXvodzUUzsd+OrdggiGjsyyExR2uKsODNSPDy77yrmrzqWYgIcNEMw= X-Forefront-PRVS: 02973C87BC X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(39410400002)(39400400002)(39840400002)(39450400003)(377424004)(53936002)(23676002)(5660300001)(65826007)(50466002)(33646002)(74482002)(7736002)(6666003)(6916009)(305945005)(36756003)(31696002)(86362001)(575784001)(64126003)(83506001)(25786009)(3846002)(54356999)(110136004)(81166006)(50986999)(230700001)(47776003)(2906002)(478600001)(77096006)(6486002)(8676002)(66066001)(6116002)(38730400002)(4001350100001)(189998001)(31686004)(42186005)(2351001);DIR:OUT;SFP:1102;SCL:1;SRVR:AMSPR02MB230;H:[10.9.78.56];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTVNQUjAyTUIyMzA7MjM6N0EzdU1UbDBkT0dLSmdTK3lDYU1sM3RhclBj?= =?utf-8?B?RHdMV1hxbTVJRk02a0c5blhDbkdWcEpuUEpYWnVvUFAvcGdUb2RNQTdLWmdP?= =?utf-8?B?ZUFob2RHTFU4YUI3aE1qY29oTGhBZmFWRnM1eWd1N3dDdU1yeFFNWTRKSHVH?= =?utf-8?B?dTdjSU5RZG5GQVFxQWw2MXpNSUlKeDNpbEhsQzNjalJWSmhlMjRoQmFxeno2?= =?utf-8?B?Sk5BMnZoYmJrdEd3Z2VCYkNQNGZRUmN2QmtwTzNLalpnZ1h1cnlvL2hVV3No?= =?utf-8?B?SlR4cHNzVjdaT2lsNzFMaEJ0a296QVRzWnRFS0dGYmR3Y0UyalU5VzY2TFJP?= =?utf-8?B?RnhUSDRiUUJlaWxwL1ZaT2srTkpiNHkxUlFENFZKYkNOMUZUVlYxQUJxbWNo?= =?utf-8?B?bkRZcUJOVk5YSkZjUkZ0SkRaMno5R0V4VjhNQURZWXc0eGd3MGFkdlpQSUo5?= =?utf-8?B?OHQxdXh6SFJKTmo2UW9kc2JNeCtPV04zdzV1TjB4WWdJYy9wZ2MzaW9PSE5Q?= =?utf-8?B?a2s3U1JzSVlDejhCbS9uL2UvOFhHTHFCWHhPTUFxcEZpV1g4SkQ0RTEwdkdv?= =?utf-8?B?cTJHQytRZHVqd3ByZnhOR1pvUUdGKzJUaG81ejU4R3Y5Q2hMc2xXN21UZU1u?= =?utf-8?B?VWRZbjhGME1wVFc2dkdZdGFIcFR2bWxUZWVTZjM4NWFwSFluOFpMVVdPanZR?= =?utf-8?B?eWJnamdjVUZiSUZyUWZSdjB3UWYrYmxscllZaWpEYXZNSFZpYUNpVnRvYjJE?= =?utf-8?B?eGgyVnYzOGpnRWRtaEdWUTVlMFRwNmdPbTBKOFhzcWIyMFJnS05zUzA5USsx?= =?utf-8?B?SGhXclkxbWZNZXFUM0tadDg3NmhyOWUrZER6WklVUXR2U25LNGxvR0JYVGRH?= =?utf-8?B?VWpEVnNHQUVzdmt1ZGs4b250K3pxZTJLSjR3L01qTE5pMnA1MFNKeEZkWFRX?= =?utf-8?B?Z01EazkvYllvZ1Vvdzd6L1E5RXVHQlZ3bHRrQ3pDZXlDaUdEVkpzZ2pBbjJp?= =?utf-8?B?ZDhwdy80ZnNKSTlVdG8wQWFtSnA0YTl3YlUzTG9oZXQ3b29Udm40OXVqY2pP?= =?utf-8?B?QnBqY0labzgyMnZicjZ0ZWltT3NaMHYrMWtMTFVBYTAzMzZETHJvY3F6YXBC?= =?utf-8?B?WXdpRWdUMVUveWQ1VHdTQkpYNk11cmdsTEVLbTB2NXN4NWoxM0szcjIwcFJB?= =?utf-8?B?VjJ6ZGREN2RHMURWblJvRkFPMFQyZXZoTXp6TWVWYk5HTkI0V3VLaGRHL0JS?= =?utf-8?B?dk5QR3lSN1VUV3kvVzRxUHJMeko1SVNZcDZ6M3kyZnozdFRXTG52ZG9DNmtu?= =?utf-8?B?VE8xbjIrWTFDUjBKVGhrS2labjhna2k5U1h6S0V3aGpNQXh6YktaOWhsdStp?= =?utf-8?B?TU1Qck9mWUVVdHFISm0wUUQ1dittb1h4U3FoS2NJTWpsYW5uWThaZFQwQzlt?= =?utf-8?B?aFFiSkYrWW1xamxTNUZVTXJTZFVvMUdqUmdSNCtFS2t2WGRQdmtkVmMzVzRv?= =?utf-8?B?RWg2RXNuS3lqZWFiQ2JNOS9kVU01UGxZRjkyTUZwMzVTWlJBTWRCc1pCRjZN?= =?utf-8?B?NCtGSGt2UlhFQUdHRXpkMFVxSkZIQT09?= X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB230;6:W4/I3+DnK6eBjkrjwnlGG826vwTnrDjtUw6B7ghjgRTGKGQ073LMCJWmJ1NIHSZG2gi5YmYvXMsB7DoZB1HeA5F1c+0jmmBboKl+KZ1Z/0qZXH7u1PzvYlUtGzTskXa03M0bMPaSmtG89ahBK9r1fo59Vieq42UnCEgBOtd4mP2XZAYClGcFHYN7iRhG5Pb6p7Lkj+hBR7V8g2OIvfPBhaEnxrsp63yUe7renzM7EsSo4Ladzrj9MZr3K0q/OqPvO83Dwd/M9UCgwLi+mRYOpfVfYfyUKh5I6JN18IufGGuuH+ove6fL1Q+70pujAG9QN8b5rmk8O17llVS4gVWj7thMHjXIOIICxYyKSqwv/1bAQzznmx6LR7eWDG2/5S7i6fFVqtFU3RipBFEyJdha2qh10jtNMgyqxaUbJLdJUIcDzaRedLSSwzLi/dF7AWWlYSHhEDgbzV7qupbEWXr2Z2IDCJNoiEpW24YHEY3llWoB4edH3bIwklFBi8bI224YUtXXj+McPEBJkSpKmwXR3Q==;5:/aJ+oOiVomV0LISaJysMwGOTRSs4jLIqJ2WBqrrd+u9ay8+zgO0G7LkerIZIeokbsthFeVPM4ZFrZlUwOAvLIKKsnjNwySFjhCjYTucnaWTm3qTjl2M+I34oBkNYJHx8ygNLuCzVr+ZdixQaM04ETQ==;24:QVY7uGW5qd+LW26u4nuAgO1JnzFYTjHLZ1da6t6gfN511GNiKiXEmTAQSTIoGD9ZUtisMmwb07/aBoovW+KooMQI2cWEUPjnNmhAplivFYw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB230;7:v350YfkHT1EpRDKUvNyiMEa3/GGP5AUzl9gN22CHfwPDp9HwYqB6SZcTm/1CMP065UXybzKj9v79aKa321FllFGiRvX23gfsSw7nI2cTRAR2KKetoSAqkVE39IlzVKKK/qNbu+9HVoID3f8L1O3xpeoy792C2fxn3FK8kidHPH7eJlLqacgVKDn4XAAHxgYRLEQoy4usjd29lfday8S6gCz6YuTq8hQewEPnwGqQML1PotS8HqqY5hBWls5l3xFmCs1ANo+rk9j3T4iWbRGPdUMDmdh9N7xtQ1IWTdhdl4U4L9UT4951NFkF3/LLmNFM8F3tVrdkuqt8npibZNlRSg== X-OriginatorOrg: qt.io X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2017 10:55:53.3923 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMSPR02MB230 X-IsSubscribed: yes X-SW-Source: 2017-q2/txt/msg00173.txt.bz2 On windows we cannot rename or unlink open files. Signed-off-by: Ulf Hermann --- libasm/ChangeLog | 4 ++++ libasm/asm_end.c | 15 +++++++++++---- tests/ChangeLog | 9 +++++++++ tests/newfile.c | 7 +++++-- tests/newscn.c | 3 ++- tests/update1.c | 1 + tests/update2.c | 1 + tests/update3.c | 1 + tests/update4.c | 1 + 9 files changed, 35 insertions(+), 7 deletions(-) diff --git a/libasm/ChangeLog b/libasm/ChangeLog index 2b499c7..0e67657 100644 --- a/libasm/ChangeLog +++ b/libasm/ChangeLog @@ -1,5 +1,9 @@ 2017-05-04 Ulf Hermann + * asm_end.c: Rename the output file only after freeing resources. + +2017-05-04 Ulf Hermann + * asm_end.c: Don't fchmod the new file if fchmod is unavailable. 2017-02-28 Ulf Hermann diff --git a/libasm/asm_end.c b/libasm/asm_end.c index 7fabe94..7891fbb 100644 --- a/libasm/asm_end.c +++ b/libasm/asm_end.c @@ -521,16 +521,23 @@ asm_end (AsmCtx_t *ctx) } #endif + char *tmp_fname = strdup (ctx->tmp_fname); + char *fname = strdup (ctx->fname); + + /* Free the resources. */ + __libasm_finictx (ctx); + /* Rename output file. */ - if (rename (ctx->tmp_fname, ctx->fname) != 0) + result = rename (tmp_fname, fname); + free (tmp_fname); + free (fname); + + if (result != 0) { __libasm_seterrno (ASM_E_CANNOT_RENAME); return -1; } - /* Free the resources. */ - __libasm_finictx (ctx); - return 0; } diff --git a/tests/ChangeLog b/tests/ChangeLog index 5e29f82..b8de138 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,5 +1,14 @@ 2017-05-04 Ulf Hermann + * newfile.c: Close the file when we're done and unlink it afterwards. + * newscn.c: Likewise. + * update1.c: Likewise. + * update2.c: Likewise. + * update3.c: Likewise. + * update4.c: Likewise. + +2017-05-04 Ulf Hermann + * asm-tst4.c: Don't assume unix file system conventions. * asm-tst5.c: Likewise. * asm-tst6.c: Likewise. diff --git a/tests/newfile.c b/tests/newfile.c index 5eabdcb..a279317 100644 --- a/tests/newfile.c +++ b/tests/newfile.c @@ -63,8 +63,6 @@ main (int argc, char *argv[] __attribute__ ((unused))) printf ("cannot create temporary file: %m\n"); exit (1); } - /* Remove the file when we exit. */ - unlink (fname); elf_version (EV_CURRENT); elf = elf_begin (fd, ELF_C_WRITE, NULL); @@ -166,5 +164,10 @@ main (int argc, char *argv[] __attribute__ ((unused))) (void) elf_end (elf); } + close (fd); + + /* Remove the file when we exit. */ + unlink (fname); + return result; } diff --git a/tests/newscn.c b/tests/newscn.c index 466f2f6..de8951d 100644 --- a/tests/newscn.c +++ b/tests/newscn.c @@ -46,7 +46,6 @@ main (void) fprintf (stderr, "Failed to open fdput file: %s\n", name); exit (1); } - unlink (name); elf = elf_begin (fd, ELF_C_WRITE, NULL); if (elf == NULL) @@ -62,5 +61,7 @@ main (void) elf_end (elf); close (fd); + unlink (name); + return 0; } diff --git a/tests/update1.c b/tests/update1.c index a571618..548c6d8 100644 --- a/tests/update1.c +++ b/tests/update1.c @@ -121,6 +121,7 @@ main (int argc, char *argv[] __attribute__ ((unused))) exit (1); } + close (fd); unlink (fname); return 0; diff --git a/tests/update2.c b/tests/update2.c index 3e22879..1dcff3f 100644 --- a/tests/update2.c +++ b/tests/update2.c @@ -144,6 +144,7 @@ main (int argc, char *argv[] __attribute__ ((unused))) exit (1); } + close (fd); unlink (fname); return 0; diff --git a/tests/update3.c b/tests/update3.c index d619bed..9d4f880 100644 --- a/tests/update3.c +++ b/tests/update3.c @@ -199,6 +199,7 @@ main (int argc, char *argv[] __attribute__ ((unused))) exit (1); } + close (fd); unlink (fname); return 0; diff --git a/tests/update4.c b/tests/update4.c index 8196b8c..a762e0a 100644 --- a/tests/update4.c +++ b/tests/update4.c @@ -351,6 +351,7 @@ main (int argc, char *argv[] __attribute__ ((unused))) exit (1); } + close (fd); unlink (fname); return 0; -- 2.1.4