Revision ae261c86 block/vmdk.c

b/block/vmdk.c
102 102
{
103 103
    uint32_t magic;
104 104

  
105
    if (buf_size < 4)
105
    if (buf_size < 4) {
106 106
        return 0;
107
    }
107 108
    magic = be32_to_cpu(*(uint32_t *)buf);
108 109
    if (magic == VMDK3_MAGIC ||
109 110
        magic == VMDK4_MAGIC) {
......
193 194
        cid_str_size = sizeof("CID");
194 195
    }
195 196

  
196
    if ((p_name = strstr(desc,cid_str)) != NULL) {
197
    p_name = strstr(desc, cid_str);
198
    if (p_name != NULL) {
197 199
        p_name += cid_str_size;
198
        sscanf(p_name,"%x",&cid);
200
        sscanf(p_name, "%x", &cid);
199 201
    }
200 202

  
201 203
    return cid;
......
212 214
        return -EIO;
213 215
    }
214 216

  
215
    tmp_str = strstr(desc,"parentCID");
217
    tmp_str = strstr(desc, "parentCID");
216 218
    pstrcpy(tmp_desc, sizeof(tmp_desc), tmp_str);
217
    if ((p_name = strstr(desc,"CID")) != NULL) {
219
    p_name = strstr(desc, "CID");
220
    if (p_name != NULL) {
218 221
        p_name += sizeof("CID");
219 222
        snprintf(p_name, sizeof(desc) - (p_name - desc), "%x\n", cid);
220 223
        pstrcat(desc, sizeof(desc), tmp_desc);
......
234 237
    uint32_t cur_pcid;
235 238

  
236 239
    if (p_bs) {
237
        cur_pcid = vmdk_read_cid(p_bs,0);
238
        if (s->parent_cid != cur_pcid)
239
            // CID not valid
240
        cur_pcid = vmdk_read_cid(p_bs, 0);
241
        if (s->parent_cid != cur_pcid) {
242
            /* CID not valid */
240 243
            return 0;
244
        }
241 245
    }
242 246
#endif
243
    // CID valid
247
    /* CID valid */
244 248
    return 1;
245 249
}
246 250

  
......
255 259
        return -1;
256 260
    }
257 261

  
258
    if ((p_name = strstr(desc,"parentFileNameHint")) != NULL) {
262
    p_name = strstr(desc, "parentFileNameHint");
263
    if (p_name != NULL) {
259 264
        char *end_name;
260 265

  
261 266
        p_name += sizeof("parentFileNameHint") + 1;
262
        if ((end_name = strchr(p_name,'\"')) == NULL)
267
        end_name = strchr(p_name, '\"');
268
        if (end_name == NULL) {
263 269
            return -1;
264
        if ((end_name - p_name) > sizeof (bs->backing_file) - 1)
270
        }
271
        if ((end_name - p_name) > sizeof(bs->backing_file) - 1) {
265 272
            return -1;
273
        }
266 274

  
267 275
        pstrcpy(bs->backing_file, end_name - p_name + 1, p_name);
268 276
    }
......
595 603
    if (bs->backing_hd) {
596 604
        int ret;
597 605

  
598
        if (!vmdk_is_cid_valid(bs))
606
        if (!vmdk_is_cid_valid(bs)) {
599 607
            return -1;
608
        }
600 609

  
601 610
        /* floor offset to cluster */
602 611
        offset -= offset % (extent->cluster_sectors * 512);
......
655 664
    int min_index, i, j;
656 665
    uint32_t min_count, *l2_table, tmp = 0;
657 666

  
658
    if (m_data)
667
    if (m_data) {
659 668
        m_data->valid = 0;
669
    }
660 670
    if (extent->flat) {
661 671
        *cluster_offset = extent->flat_start_offset;
662 672
        return 0;
......
712 722
            return -1;
713 723
        }
714 724

  
715
        // Avoid the L2 tables update for the images that have snapshots.
725
        /* Avoid the L2 tables update for the images that have snapshots. */
716 726
        *cluster_offset = bdrv_getlength(extent->file);
717 727
        bdrv_truncate(
718 728
            extent->file,
......
729 739
         * or inappropriate VM shutdown.
730 740
         */
731 741
        if (get_whole_cluster(
732
                bs, extent, *cluster_offset, offset, allocate) == -1)
742
                bs, extent, *cluster_offset, offset, allocate) == -1) {
733 743
            return -1;
744
        }
734 745

  
735 746
        if (m_data) {
736 747
            m_data->offset = tmp;
......
780 791

  
781 792
    index_in_cluster = sector_num % extent->cluster_sectors;
782 793
    n = extent->cluster_sectors - index_in_cluster;
783
    if (n > nb_sectors)
794
    if (n > nb_sectors) {
784 795
        n = nb_sectors;
796
    }
785 797
    *pnum = n;
786 798
    return ret;
787 799
}
......
805 817
                            sector_num << 9, 0, &cluster_offset);
806 818
        index_in_cluster = sector_num % extent->cluster_sectors;
807 819
        n = extent->cluster_sectors - index_in_cluster;
808
        if (n > nb_sectors)
820
        if (n > nb_sectors) {
809 821
            n = nb_sectors;
822
        }
810 823
        if (ret) {
811 824
            /* if not allocated, try to read from parent image, if exist */
812 825
            if (bs->backing_hd) {
813
                if (!vmdk_is_cid_valid(bs))
826
                if (!vmdk_is_cid_valid(bs)) {
814 827
                    return -EINVAL;
828
                }
815 829
                ret = bdrv_read(bs->backing_hd, sector_num, buf, n);
816
                if (ret < 0)
830
                if (ret < 0) {
817 831
                    return ret;
832
                }
818 833
            } else {
819 834
                memset(buf, 0, 512 * n);
820 835
            }
......
888 903
        sector_num += n;
889 904
        buf += n * 512;
890 905

  
891
        // update CID on the first write every time the virtual disk is opened
906
        /* update CID on the first write every time the virtual disk is
907
         * opened */
892 908
        if (!s->cid_updated) {
893 909
            vmdk_write_cid(bs, time(NULL));
894 910
            s->cid_updated = true;
......
1301 1317
};
1302 1318

  
1303 1319
static BlockDriver bdrv_vmdk = {
1304
    .format_name	= "vmdk",
1305
    .instance_size	= sizeof(BDRVVmdkState),
1306
    .bdrv_probe		= vmdk_probe,
1320
    .format_name    = "vmdk",
1321
    .instance_size  = sizeof(BDRVVmdkState),
1322
    .bdrv_probe     = vmdk_probe,
1307 1323
    .bdrv_open      = vmdk_open,
1308
    .bdrv_read		= vmdk_read,
1309
    .bdrv_write		= vmdk_write,
1310
    .bdrv_close		= vmdk_close,
1311
    .bdrv_create	= vmdk_create,
1312
    .bdrv_flush		= vmdk_flush,
1313
    .bdrv_is_allocated	= vmdk_is_allocated,
1324
    .bdrv_read      = vmdk_read,
1325
    .bdrv_write     = vmdk_write,
1326
    .bdrv_close     = vmdk_close,
1327
    .bdrv_create    = vmdk_create,
1328
    .bdrv_flush     = vmdk_flush,
1329
    .bdrv_is_allocated  = vmdk_is_allocated,
1314 1330

  
1315 1331
    .create_options = vmdk_create_options,
1316 1332
};

Also available in: Unified diff