mirror of
https://github.com/samba-team/samba.git
synced 2025-03-11 16:58:40 +03:00
Fixed memory leaks found in enumprinterdrivers code.
Jeremy. (This used to be commit e08b521559a824da09b0b73a04e462c573c42b06)
This commit is contained in:
parent
692fe0cabf
commit
d836024b28
@ -1819,8 +1819,7 @@ uint32 get_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL *driver, uint32 level,
|
|||||||
{
|
{
|
||||||
case 3:
|
case 3:
|
||||||
{
|
{
|
||||||
success=get_a_printer_driver_3(&(driver->info_3),
|
success=get_a_printer_driver_3(&driver->info_3, printername,
|
||||||
printername,
|
|
||||||
architecture, version);
|
architecture, version);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1829,7 +1828,8 @@ uint32 get_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL *driver, uint32 level,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (success == 0) dump_a_printer_driver(*driver, level);
|
if (success == 0)
|
||||||
|
dump_a_printer_driver(*driver, level);
|
||||||
return (success);
|
return (success);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3677,7 +3677,8 @@ static uint32 enumprinterdrivers_level1(fstring servername, fstring architecture
|
|||||||
DEBUGADD(5,("\tdriver: [%s]\n", list[i]));
|
DEBUGADD(5,("\tdriver: [%s]\n", list[i]));
|
||||||
ZERO_STRUCT(driver);
|
ZERO_STRUCT(driver);
|
||||||
get_a_printer_driver(&driver, 3, list[i], architecture, version);
|
get_a_printer_driver(&driver, 3, list[i], architecture, version);
|
||||||
fill_printer_driver_info_1(&(driver_info_1[*returned+i]), driver, servername, architecture );
|
fill_printer_driver_info_1(&driver_info_1[*returned+i], driver, servername, architecture );
|
||||||
|
free_a_printer_driver(driver, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
*returned+=ndrivers;
|
*returned+=ndrivers;
|
||||||
@ -3687,7 +3688,7 @@ static uint32 enumprinterdrivers_level1(fstring servername, fstring architecture
|
|||||||
/* check the required size. */
|
/* check the required size. */
|
||||||
for (i=0; i<*returned; i++) {
|
for (i=0; i<*returned; i++) {
|
||||||
DEBUGADD(6,("adding driver [%d]'s size\n",i));
|
DEBUGADD(6,("adding driver [%d]'s size\n",i));
|
||||||
*needed += spoolss_size_printer_driver_info_1(&(driver_info_1[i]));
|
*needed += spoolss_size_printer_driver_info_1(&driver_info_1[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!alloc_buffer_size(buffer, *needed)) {
|
if (!alloc_buffer_size(buffer, *needed)) {
|
||||||
@ -3698,7 +3699,7 @@ static uint32 enumprinterdrivers_level1(fstring servername, fstring architecture
|
|||||||
/* fill the buffer with the form structures */
|
/* fill the buffer with the form structures */
|
||||||
for (i=0; i<*returned; i++) {
|
for (i=0; i<*returned; i++) {
|
||||||
DEBUGADD(6,("adding driver [%d] to buffer\n",i));
|
DEBUGADD(6,("adding driver [%d] to buffer\n",i));
|
||||||
new_smb_io_printer_driver_info_1("", buffer, &(driver_info_1[i]), 0);
|
new_smb_io_printer_driver_info_1("", buffer, &driver_info_1[i], 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
safe_free(driver_info_1);
|
safe_free(driver_info_1);
|
||||||
@ -3747,7 +3748,8 @@ static uint32 enumprinterdrivers_level2(fstring servername, fstring architecture
|
|||||||
DEBUGADD(5,("\tdriver: [%s]\n", list[i]));
|
DEBUGADD(5,("\tdriver: [%s]\n", list[i]));
|
||||||
ZERO_STRUCT(driver);
|
ZERO_STRUCT(driver);
|
||||||
get_a_printer_driver(&driver, 3, list[i], architecture, version);
|
get_a_printer_driver(&driver, 3, list[i], architecture, version);
|
||||||
fill_printer_driver_info_2(&(driver_info_2[*returned+i]), driver, servername);
|
fill_printer_driver_info_2(&driver_info_2[*returned+i], driver, servername);
|
||||||
|
free_a_printer_driver(driver, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
*returned+=ndrivers;
|
*returned+=ndrivers;
|
||||||
@ -3817,7 +3819,8 @@ static uint32 enumprinterdrivers_level3(fstring servername, fstring architecture
|
|||||||
DEBUGADD(5,("\tdriver: [%s]\n", list[i]));
|
DEBUGADD(5,("\tdriver: [%s]\n", list[i]));
|
||||||
ZERO_STRUCT(driver);
|
ZERO_STRUCT(driver);
|
||||||
get_a_printer_driver(&driver, 3, list[i], architecture, version);
|
get_a_printer_driver(&driver, 3, list[i], architecture, version);
|
||||||
fill_printer_driver_info_3(&(driver_info_3[*returned+i]), driver, servername);
|
fill_printer_driver_info_3(&driver_info_3[*returned+i], driver, servername);
|
||||||
|
free_a_printer_driver(driver, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
*returned+=ndrivers;
|
*returned+=ndrivers;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user