On 5/10/21 12:13 PM, Dumitru Ceara wrote:
>> +/* Creates a new pstream named 'name' that will accept new replay
>> connections
>> + * reading them from the replay file and stores a pointer to the stream in
>> + * '*pstreamp'.
>> + *
>> + * Takes ownership of 'name'.
>> + *
>> + * Returns 0 if successful, otherwise a positive errno value. */
>> +static int
>> +pstream_replay_listen(const char *name, char *suffix OVS_UNUSED,
>> + struct pstream **pstreamp, uint8_t dscp OVS_UNUSED)
>> +{
>> + int seqno = 0, error = 0, listen_result;
>> + replay_file_t f;
>> +
>> + ovs_replay_lock();
>> + error = ovs_replay_file_open(name, &f, &seqno);
>> + if (error) {
>> + VLOG_ERR("%s: failed to open pstream.", name);> + goto
>> unlock;
> 'name' is leaked here.
>
>> + }
>> +
>> + error = ovs_replay_read(f, NULL, 0, &listen_result, &seqno, true);
>> + if (error) {
>> + VLOG_ERR("%s: failed to read 'listen' record.", name);
>> + ovs_replay_file_close(f);
>> + goto unlock;
> Same here.
>
>> + }
>> +
>> + if (listen_result) {
>> + error = -listen_result;
>> + ovs_replay_file_close(f);
>> + goto unlock;
> Here too.
>
>> + }
>> +
>> + struct replay_pstream *ps = xmalloc(sizeof *ps);
>> + pstream_init(&ps->pstream, &preplay_pstream_class, xstrdup(name));
> I guess the xstrdup(name) is not needed, otherwise we don't really take
> ownership of 'name' and we actually leak it.
>
Actually, this is wrong, sorry for the noise. 'name' is not leaked, but
the function comment is misleading.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev