CHANGES 225 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276
  1. _ _ ____ _
  2. ___| | | | _ \| |
  3. / __| | | | |_) | |
  4. | (__| |_| | _ <| |___
  5. \___|\___/|_| \_\_____|
  6. Changelog
  7. Version 7.79.1 (22 Sep 2021)
  8. Daniel Stenberg (22 Sep 2021)
  9. - RELEASE-NOTES: synced
  10. curl 7.79.1 release
  11. - THANKS: added names from the 7.79.1 release
  12. - test897: verify delivery of IMAP post-body header content
  13. The "content" is delivered as "body" by curl, but the envelope continues
  14. after the body and the rest of it should be delivered as header.
  15. The IMAP server can now get 'POSTFETCH' set to include more data to
  16. include after the body and test 897 is done to verify that such "extra"
  17. header data is in fact delivered by curl as header.
  18. Ref: #7284 but fails to reproduce the issue
  19. Closes #7748
  20. - KNOWN_BUGS: connection migration doesn't work
  21. Closes #7695
  22. - RELEASE-NOTES: synced
  23. - http: fix the broken >3 digit response code detection
  24. When the "reason phrase" in the HTTP status line starts with a digit,
  25. that was treated as the forth response code digit and curl would claim
  26. the response to be non-compliant.
  27. Added test 1466 to verify this case.
  28. Regression brought by 5dc594e44f73b17
  29. Reported-by: Glenn de boer
  30. Fixes #7738
  31. Closes #7739
  32. Jay Satiro (17 Sep 2021)
  33. - strerror: use sys_errlist instead of strerror on Windows
  34. - Change Curl_strerror to use sys_errlist[errnum] instead of strerror to
  35. retrieve the error message on Windows.
  36. Windows' strerror writes to a static buffer and is not thread-safe.
  37. Follow-up to 2f0bb86 which removed most instances of strerror in favor
  38. of calling Curl_strerror (which calls strerror_r for other platforms).
  39. Ref: https://github.com/curl/curl/pull/7685
  40. Ref: https://github.com/curl/curl/commit/2f0bb86
  41. Closes https://github.com/curl/curl/pull/7735
  42. Daniel Stenberg (16 Sep 2021)
  43. - dist: provide lib/.checksrc in the tarball
  44. So that debug builds work (checksrc really)
  45. Reported-by: Marcel Raad
  46. Reported-by: tawmoto on github
  47. Fixes #7733
  48. Closes #7734
  49. - TODO: Improve documentation about fork safety
  50. Closes #6968
  51. - hsts: CURLSTS_FAIL from hsts read callback should fail transfer
  52. ... and have CURLE_ABORTED_BY_CALLBACK returned.
  53. Extended test 1915 to verify.
  54. Reported-by: Jonathan Cardoso
  55. Fixes #7726
  56. Closes #7729
  57. - test1184: disable
  58. The test should be fine and it works for me repeated when run manually,
  59. but clearly it causes CI failures and it needs more research.
  60. Reported-by: RiderALT on github
  61. Fixes #7725
  62. Closes #7732
  63. - Curl_http2_setup: don't change connection data on repeat invokes
  64. Regression from 3cb8a748670ab88c (releasde in 7.79.0). That change moved
  65. transfer oriented inits to before the check but also erroneously moved a
  66. few connection oriented ones, which causes problems.
  67. Reported-by: Evangelos Foutras
  68. Fixes #7730
  69. Closes #7731
  70. - RELEASE-NOTES: synced
  71. and bump to 7.79.1
  72. Kamil Dudka (16 Sep 2021)
  73. - tests/sshserver.pl: make it work with openssh-8.7p1
  74. ... by not using options with no argument where an argument is required:
  75. === Start of file tests/log/ssh_server.log
  76. curl_sshd_config line 6: no argument after keyword "DenyGroups"
  77. curl_sshd_config line 7: no argument after keyword "AllowGroups"
  78. curl_sshd_config line 10: Deprecated option AuthorizedKeysFile2
  79. curl_sshd_config line 29: Deprecated option KeyRegenerationInterval
  80. curl_sshd_config line 39: Deprecated option RhostsRSAAuthentication
  81. curl_sshd_config line 40: Deprecated option RSAAuthentication
  82. curl_sshd_config line 41: Deprecated option ServerKeyBits
  83. curl_sshd_config line 45: Deprecated option UseLogin
  84. curl_sshd_config line 56: no argument after keyword "AcceptEnv"
  85. curl_sshd_config: terminating, 3 bad configuration options
  86. === End of file tests/log/ssh_server.log
  87. === Start of file log/sftp_server.log
  88. curl_sftp_config line 33: Unsupported option "rhostsrsaauthentication"
  89. curl_sftp_config line 34: Unsupported option "rsaauthentication"
  90. curl_sftp_config line 52: no argument after keyword "sendenv"
  91. curl_sftp_config: terminating, 1 bad configuration options
  92. Connection closed.
  93. Connection closed
  94. === End of file log/sftp_server.log
  95. Closes #7724
  96. Daniel Stenberg (15 Sep 2021)
  97. - hsts: handle unlimited expiry
  98. When setting a blank expire string, meaning unlimited, curl would pass
  99. TIME_T_MAX to getime_r() when creating the output, while on 64 bit
  100. systems such a large value cannot be convetered to a tm struct making
  101. curl to exit the loop with an error instead. It can't be converted
  102. because the year it would represent doesn't fit in the 'int tm_year'
  103. field!
  104. Starting now, unlimited expiry is instead handled differently by using a
  105. human readable expiry date spelled out as "unlimited" instead of trying
  106. to use a distant actual date.
  107. Test 1660 and 1915 have been updated to help verify this change.
  108. Reported-by: Jonathan Cardoso
  109. Fixes #7720
  110. Closes #7721
  111. - curl_multi_fdset: make FD_SET() not operate on sockets out of range
  112. The VALID_SOCK() macro was made to only check for FD_SETSIZE if curl was
  113. built to use select(), even though the curl_multi_fdset() function
  114. always and unconditionally uses FD_SET and needs the check.
  115. Reported-by: 0xee on github
  116. Fixes #7718
  117. Closes #7719
  118. - FAQ: add GOPHERS + curl works on data, not files
  119. Version 7.79.0 (14 Sep 2021)
  120. Daniel Stenberg (14 Sep 2021)
  121. - RELEASE-NOTES: synced
  122. For the 7.79.0 release
  123. - THANKS: add contributors from 7.79.0 release cycle
  124. - FAQ: add two dev related questions
  125. 8.1 Why does curl use C89?
  126. 8.2 Will curl be rewritten?
  127. Spell-checked-by: Paul Johnson
  128. Closes #7715
  129. - zuul.d/jobs: disable three tests for *-openssl-disable-proxy
  130. ... as they mysteriously seem to permfail without being related to
  131. proxy.
  132. Closes #7714
  133. - [Patrick Monnerat brought this change]
  134. ftp,imap,pop3,smtp: reject STARTTLS server response pipelining
  135. If a server pipelines future responses within the STARTTLS response, the
  136. former are preserved in the pingpong cache across TLS negotiation and
  137. used as responses to the encrypted commands.
  138. This fix detects pipelined STARTTLS responses and rejects them with an
  139. error.
  140. CVE-2021-22947
  141. Bug: https://curl.se/docs/CVE-2021-22947.html
  142. - [Patrick Monnerat brought this change]
  143. ftp,imap,pop3: do not ignore --ssl-reqd
  144. In imap and pop3, check if TLS is required even when capabilities
  145. request has failed.
  146. In ftp, ignore preauthentication (230 status of server greeting) if TLS
  147. is required.
  148. Bug: https://curl.se/docs/CVE-2021-22946.html
  149. CVE-2021-22946
  150. - [z2_ on hackerone brought this change]
  151. mqtt: clear the leftovers pointer when sending succeeds
  152. CVE-2021-22945
  153. Bug: https://curl.se/docs/CVE-2021-22945.html
  154. - zuul: bump the rustls job to use v0.7.2
  155. ... and add -lm when using a rust library.
  156. Closes #7701
  157. - RELEASE-PROCEDURE: add release dates from now to 8.0.0 in 2023
  158. - SECURITY-PROCESS: tweak a little to match current practices
  159. Closes #7713
  160. - http_proxy: fix the User-Agent inclusion in CONNECT
  161. It should not refer to the uagent string that is allocated and created
  162. for the end server http request, as that pointer may be cleared on
  163. subsequent CONNECT requests.
  164. Added test case 1184 to verify.
  165. Reported-by: T200proX7 on github
  166. Fixes #7705
  167. Closes #7707
  168. - Curl_hsts_loadcb: don't attempt to load if hsts wasn't inited
  169. Reported-by: Jonathan Cardoso
  170. Fixes #7710
  171. Closes #7711
  172. - [Tatsuhiro Tsujikawa brought this change]
  173. ngtcp2: fix build with ngtcp2 and nghttp3
  174. ngtcp2_conn_client_new and nghttp3_conn_client_new are now macros.
  175. Check the wrapped functions instead.
  176. ngtcp2_stream_close callback now takes flags parameter.
  177. Closes #7709
  178. - write-out.d: clarify size_download/upload
  179. They show the number of "body" bytes transfered.
  180. Fixes #7702
  181. Closes #7706
  182. - http2: Curl_http2_setup needs to init stream data in all invokes
  183. Thus function was written to avoid doing multiple connection data
  184. initializations, which is fine, but since it also initiates stream
  185. related data it is crucial that it doesn't skip those even if called
  186. again for the same connection. Solved by moving the stream
  187. initializations before the "doing-it-again" check.
  188. Reported-by: Inho Oh
  189. Fixes #7630
  190. Closes #7692
  191. - url: fix compiler warning in no-verbose builds
  192. Follow-up from 2f0bb864c12
  193. Closes #7700
  194. - non-ascii: fix build errors from strerror fix
  195. Follow-up to 2f0bb864c12
  196. Closes #7697
  197. - parse_args: redo the warnings for --remote-header-name combos
  198. ... to avoid the memory leak risk pointed out by scan-build.
  199. Follow-up from 7a3e981781d6c18a
  200. Closes #7698
  201. - ngtcp2: adapt to new size defintions upstream
  202. Reviewed-by: Tatsuhiro Tsujikawa
  203. Closes #7699
  204. - rustls: add strerror.h include
  205. Follow-up to 2f0bb864c12
  206. - docs: the security list is reached at security at curl.se now
  207. Also update the FAQ section a bit to encourage users to rather submit
  208. security issues on hackerone than sending email.
  209. Closes #7689
  210. Marc Hoersken (9 Sep 2021)
  211. - runtests: add option -u to error on server unexpectedly alive
  212. Let's try to actually handle the server unexpectedly alive
  213. case by first making them visible on CI builds as failures.
  214. This is needed to detect issues with killing of the test
  215. servers completely including nested process chains with
  216. multiple PIDs per test server (including bash and perl).
  217. On Windows/cygwin platforms this is especially helpful with
  218. debugging PID mixups due to cygwin using its own PID space.
  219. Reviewed-by: Daniel Stenberg
  220. Closes #7180
  221. Daniel Stenberg (9 Sep 2021)
  222. - opts docs: unify phrasing in NAME header
  223. - avoid writing "set ..." or "enable/disable ..." or "specify ..."
  224. *All* options for curl_easy_setopt() are about setting or enabling
  225. things and most of the existing options didn't use that way of
  226. description.
  227. - start with lowercase letter, unless abbreviation. For consistency.
  228. - Some additional touch-ups
  229. Closes #7688
  230. - strerror.h: remove the #include from files not using it
  231. - lib: don't use strerror()
  232. We have and provide Curl_strerror() internally for a reason: strerror()
  233. is not necessarily thread-safe so we should always try to avoid it.
  234. Extended checksrc to warn for this, but feature the check disabled by
  235. default and only enable it in lib/
  236. Closes #7685
  237. Daniel Gustafsson (8 Sep 2021)
  238. - cirrus: Add FreeBSD 13.0 job and disable sanitizer build
  239. As alluded to the in the now removed comment, a 13.0 image became
  240. available and is now ready to be used.
  241. The sanitizer builds were running on the 12.1 image which since has
  242. been removed from the config, leaving the builds not running at all.
  243. When enabled it turns out that they don't actually work due to very
  244. long timeouts in executing the tests, so keep the disabled for now
  245. but a bit more controlled.
  246. Closes #7592
  247. Daniel Stenberg (8 Sep 2021)
  248. - copyrights: update copyright year ranges
  249. - RELEASE-NOTES: synced
  250. - INTERNALS: c-ares has a new home: c-ares.org
  251. - docs: remove experimental mentions from HSTS and MQTT
  252. Reported-by: Jonathan Cardoso
  253. Bug: https://github.com/curl/curl/pull/6700#issuecomment-913792863
  254. Closes #7681
  255. - [Cao ZhenXiang brought this change]
  256. curl: add warning for incompatible parameters usage
  257. --continue-at - and --remote-header-name are known incompatible parameters
  258. Closes #7674
  259. - [git-bruh brought this change]
  260. examples/*hiperfifo.c: fix calloc arguments to match function proto
  261. Closes #7678
  262. - INTERNALS: bump c-ares requirement to 1.16.0
  263. Since ba904db0705c93 we use ares_getaddrinfo, added in c-ares 1.16.0
  264. - curl: stop retry if Retry-After: is longer than allowed
  265. If Retry-After: specifies a period that is longer than what fits within
  266. --retry-max-time, then stop retrying immediately.
  267. Added test 366 to verify.
  268. Reported-by: Kari Pahula
  269. Fixes #7675
  270. Closes #7676
  271. - [Michał Antoniak brought this change]
  272. mbedtls: avoid using a large buffer on the stack
  273. Use dynamic memory allocation for the buffer used in checking "pinned
  274. public key". The PUB_DER_MAX_BYTES parameter with default settings is
  275. set to a value greater than 2kB.
  276. Co-authored-by: Daniel Stenberg
  277. Closes #7586
  278. - configure: make --disable-hsts work
  279. The AC_ARG_ENABLE() macro itself uses a variable called
  280. 'enable_[option]', so when our script also used a variable with that
  281. name for the purpose of storing what the user wants, it also
  282. accidentally made it impossible to switch off the feature with
  283. --disable-hsts. Fix this by renaming our variable.
  284. Reported-by: Michał Antoniak
  285. Fixes #7669
  286. Closes #7672
  287. Jay Satiro (5 Sep 2021)
  288. - config.d: note that curlrc is used even when --config
  289. Bug: https://github.com/curl/curl/pull/7666#issuecomment-912214751
  290. Reported-by: Viktor Szakats
  291. Closes https://github.com/curl/curl/pull/7667
  292. Daniel Stenberg (4 Sep 2021)
  293. - RELEASE-NOTES: synced
  294. - test1173: check references to libcurl options
  295. ... that they refer to actual existing libcurl options.
  296. Reviewed-by: Daniel Gustafsson
  297. Closes #7656
  298. - CURLOPT_UNIX_SOCKET_PATH.3: remove nginx reference, add see also
  299. Closes #7656
  300. - opt-docs: verify man page sections + order
  301. In every libcurl option man page there are now 8 mandatory sections that
  302. must use the right name in the correct order and test 1173 verifies
  303. this. Only 14 man pages needed adjustments.
  304. The sections and the order is as follows:
  305. - NAME
  306. - SYNOPSIS
  307. - DESCRIPTION
  308. - PROTOCOLS
  309. - EXAMPLE
  310. - AVAILABILITY
  311. - RETURN VALUE
  312. - SEE ALSO
  313. Reviewed-by: Daniel Gustafsson
  314. Closes #7656
  315. - opt-docs: make sure all man pages have examples
  316. Extended manpage-syntax.pl (run by test 1173) to check that every man
  317. page for a libcurl option has an EXAMPLE section that is more than two
  318. lines. Then fixed all errors it found and added examples.
  319. Reviewed-by: Daniel Gustafsson
  320. Closes #7656
  321. - get.d: provide more useful examples
  322. Closes #7668
  323. - page-header: add GOPHERS, simplify wording in the 1st para
  324. Closes #7665
  325. - connect: get local port + ip also when reusing connections
  326. Regression. In d6a37c23a3c (7.75.0) we removed the duplicated storage
  327. (connection + easy handle), so this info needs be extracted again even
  328. for re-used connections.
  329. Add test 435 to verify
  330. Reported-by: Max Dymond
  331. Fixes #7660
  332. Closes #7662
  333. Marcel Raad (2 Sep 2021)
  334. - multi: fix compiler warning with `CURL_DISABLE_WAKEUP`
  335. `use_wakeup` is unused in this case.
  336. Closes https://github.com/curl/curl/pull/7661
  337. Daniel Stenberg (1 Sep 2021)
  338. - tests: adjust the tftpd output to work with hyper mode
  339. By making them look less like http headers, the hyper mode "tweak"
  340. doesn't interfere.
  341. Enable test 2002 and 2003 in hyper builds (and 1280 which is unrelated
  342. but should be enabled).
  343. Closes #7658
  344. Daniel Gustafsson (1 Sep 2021)
  345. - [Gisle Vanem brought this change]
  346. openssl: annotate SSL3_MT_SUPPLEMENTAL_DATA
  347. This adds support for the previously unhandled supplemental data which
  348. in -v output was printed like:
  349. TLSv1.2 (IN), TLS header, Unknown (23):
  350. These will now be printed with proper annotation:
  351. TLSv1.2 (OUT), TLS header, Supplemental data (23):
  352. Closes #7652
  353. Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  354. Daniel Stenberg (1 Sep 2021)
  355. - curl.1: provide examples for each option
  356. The file format for each option now features a "Example:" header that
  357. can provide one or more examples that get rendered appropriately in the
  358. output. All options MUST have at least one example or gen.pl complains
  359. at build-time.
  360. This fix also does a few other minor format and consistency cleanups.
  361. Closes #7654
  362. - progress: make trspeed avoid floats
  363. and compiler warnings for data conversions.
  364. Reported-by: Michał Antoniak
  365. Fixes #7645
  366. Closes #7653
  367. - test365: verify response with chunked AND Content-Length headers
  368. - http: ignore content-length if any transfer-encoding is used
  369. Fixes #7643
  370. Closes #7649
  371. - RELEASE-NOTES: synced
  372. - Revert "http2: skip immediate parsing of payload following protocol switch"
  373. This reverts commit 455a63c66f188598275e87d32de2c4e8e26b80cb.
  374. Reported-by: Tk Xiong
  375. Fixes #7633
  376. Closes #7648
  377. - KNOWN_BUGS: HTTP/3 doesn't support client certs
  378. Closes #7625
  379. - mailing lists: move from cool.haxx.se to lists.haxx.se
  380. - http_proxy: only wait for writable socket while sending request
  381. Otherwise it would wait socket writability even after the entire CONNECT
  382. request has sent and make curl basically busy-loop while waiting for a
  383. response to come back.
  384. The previous fix attempt in #7484 (c27a70a591a4) was inadequate.
  385. Reported-by: zloi-user on github
  386. Reported-by: Oleguer Llopart
  387. Fixes #7589
  388. Closes #7647
  389. - http: disallow >3-digit response codes
  390. Make the built-in HTTP parser behave similar to hyper and reject any
  391. HTTP response using more than 3 digits for the response code.
  392. Updated test 1432 accordingly.
  393. Enabled test 1432 in the hyper builds.
  394. Closes #7641
  395. - [Tatsuhiro Tsujikawa brought this change]
  396. ngtcp2: stop buffering crypto data
  397. Stop buffering crypto data because libngtcp2 now buffers submitted
  398. crypto data.
  399. Closes #7637
  400. - test1280: CRLFify the response to please hyper
  401. Closes #7639
  402. - tests: enable test 1129 for hyper builds
  403. Closes #7638
  404. - curl: better error message when -O fails to get a good name
  405. Due to how this currently works internally, it needs a working initial
  406. file name to store contents in, so it may still fail even with -J is
  407. used (and thus accepting a name from content-disposition:) if the file
  408. name part of the URL isn't "good enough".
  409. Fixes #7628
  410. Closes #7635
  411. - curl_easy_setopt: tweak the string copy wording
  412. Reported-by: Yaobin Wen
  413. Fixes #7632
  414. Closes #7634
  415. - RELEASE-NOTES: synced
  416. - [Don J Olmstead brought this change]
  417. cmake: sync CURL_DISABLE options
  418. Adds the full listing of CURL_DISABLE options to the CMake build. Moves
  419. all option code, except for CURL_DISABLE_OPENSSL_AUTO_LOA_CONFIG which
  420. resides near OpenSSL configuration, to the same block of code. Also
  421. sorts the options here and in the cmake config header.
  422. Additionally sorted the CURL-DISABLE listing and fixed the
  423. CURL_DISABLE_POP3 option.
  424. Closes #7624
  425. Jay Satiro (25 Aug 2021)
  426. - KNOWN_BUGS: FTPS upload data loss with TLS 1.3
  427. Bug: https://github.com/curl/curl/issues/6149
  428. Reported-by: Bylon2@users.noreply.github.com
  429. Closes https://github.com/curl/curl/pull/7623
  430. Daniel Stenberg (24 Aug 2021)
  431. - cmake: avoid poll() on macOS
  432. ... like we do in configure builds. Since poll() on macOS is not
  433. reliable enough.
  434. Reported-by: marc-groundctl
  435. Fixes #7595
  436. Closes #7619
  437. - c-hyper: handle HTTP/1.1 => HTTP/1.0 downgrade on reused connection
  438. Enable test 1074
  439. Closes #7617
  440. - c-hyper: deal with Expect: 100-continue combined with POSTFIELDS
  441. Enable test 1130 and 1131
  442. Closes #7616
  443. - [a1346054 brought this change]
  444. tests: be explicit about using 'python3' instead of 'python'
  445. This fixes running tests in virtualenvs (or on distros) that no longer
  446. have a symlink from python to python2 or python3.
  447. Closes #7602
  448. - [a1346054 brought this change]
  449. scripts: invoke interpreters through /usr/bin/env
  450. Closes #7602
  451. - DISABLED: enable 11 more tests for hyper builds
  452. Closes #7612
  453. - setopt: enable CURLOPT_IGNORE_CONTENT_LENGTH for hyper
  454. Since this option is also used for FTP, it needs to work to set for
  455. applications even if hyper doesn't support it for HTTP. Verified by test
  456. 1137.
  457. Updated docs to specify that the option doesn't work for HTTP when using
  458. the hyper backend.
  459. Closes #7614
  460. - test1138: remove trailing space to make work with hyper
  461. Closes #7613
  462. - libcurl-errors.3: clarify two CURLUcode errors
  463. CURLUE_BAD_HANDLE and CURLUE_BAD_PARTPOINTER should be for "bad" or
  464. wrong pointers in a generic sense, not just for NULL pointers.
  465. Reviewed-by: Jay Satiro
  466. Ref: #7605
  467. Closes #7611
  468. Jay Satiro (23 Aug 2021)
  469. - symbols-in-versions: fix CURLSSLBACKEND_QSOSSL last used version
  470. ... and also change the 'Removed' column name to 'Last' since that
  471. column is for the last version to contain the symbol.
  472. Closes https://github.com/curl/curl/pull/7609
  473. Daniel Stenberg (23 Aug 2021)
  474. - urlapi.c:seturl: assert URL instead of using if-check
  475. There's no code flow possible where this can happen. The assert makes
  476. sure it also won't be introduced undetected in the future.
  477. Closes #7610
  478. - curl-openssl.m4: show correct output for OpenSSL v3
  479. Using 3.0.0 versions configure should now show this:
  480. checking for OpenSSL headers version... 3.0.0 - 0x300
  481. checking for OpenSSL library version... 3.0.0
  482. checking for OpenSSL headers and library versions matching... yes
  483. This output doesn't actually change what configure generates but is only
  484. "cosmetic".
  485. Reported-by: Randall S. Becker
  486. Fixes #7606
  487. Closes #7608
  488. Jay Satiro (22 Aug 2021)
  489. - mksymbolsmanpage.pl: Fix showing symbol's last used version
  490. Prior to this change the symbol's deprecated version was erroneously
  491. shown as its last used version.
  492. Bug: https://github.com/curl/curl/commit/4e53b94#commitcomment-55239509
  493. Reported-by: i-ky@users.noreply.github.com
  494. Daniel Stenberg (21 Aug 2021)
  495. - mksymbolsmanpage.pl: match symbols case insenitively
  496. Follow-up to 4e53b9430c750 which made this bug show.
  497. Reported-by: i-ky
  498. Bug: https://github.com/curl/curl/commit/4e53b9430c7504de8984796e2a2091ec16f27136#commitcomment-55239253
  499. Closes #7607
  500. - asyn-ares: call ares_freeaddrinfo() to clean up addrinfo results
  501. As this leaks memory otherwise
  502. Follow-up to ba904db0705c931
  503. Closes #7599
  504. - [Ehren Bendler brought this change]
  505. wolfssl: clean up wolfcrypt error queue
  506. If wolfSSL is built in certain ways (OPENSSL_EXTRA or Debug), the error
  507. queue gets added on to for each session and never freed. Fix it by
  508. calling ERR_clear_error() like in vtls/openssl when needed. This func is
  509. a no-op in wolfcrypt if the error queue is not enabled.
  510. Closes #7594
  511. - man pages: remove trailing whitespaces
  512. Extended test 1173 (via the manpage-syntax.pl script) to detect and warn
  513. for them.
  514. Ref: #7602
  515. Reported-by: a1346054 on github
  516. Closes #7604
  517. - mailmap: add Gleb Ivanovsky
  518. - config.d: escape the backslash properly
  519. Closes #7603
  520. - [Don J Olmstead brought this change]
  521. curl_setup.h: sync values for HTTP_ONLY
  522. The values for HTTP_ONLY differed between CMakeLists.txt and
  523. curl_setup.h. Sync them and sort the values in curl_setup.h to make it
  524. easier to spot differences.
  525. Closes #7601
  526. Jay Satiro (21 Aug 2021)
  527. - configure: set classic mingw minimum OS version to XP
  528. - If the user has not specified a minimum OS version (via WINVER or
  529. _WIN32_WINNT macros) then set it to Windows XP.
  530. Prior to this change classic MinGW defaulted the minimum OS version
  531. to Windows NT 4.0 which is way too old. At least Windows XP is needed
  532. for getaddrinfo (which resolves hostnames to IPv6 addresses).
  533. Ref: https://github.com/curl/curl/issues/7483#issuecomment-891597034
  534. Closes https://github.com/curl/curl/pull/7581
  535. - schannel: Work around typo in classic mingw macro
  536. - Define ALG_CLASS_DHASH (the typo from the include) to ALG_CLASS_HASH.
  537. Prior to this change there was an incomplete fix to ignore the
  538. CALG_TLS1PRF macro on those versions of MinGW where it uses the
  539. ALG_CLASS_DHASH typoed macro.
  540. Ref: 48cf45c
  541. Ref: https://osdn.net/projects/mingw/ticket/38391
  542. Ref: https://github.com/curl/curl/issues/2924
  543. Closes https://github.com/curl/curl/pull/7580
  544. Daniel Stenberg (20 Aug 2021)
  545. - RELEASE-NOTES: synced
  546. - http_proxy: fix user-agent and custom headers for CONNECT with hyper
  547. Enable test 287
  548. Closes #7598
  549. - c-hyper: initial support for "dumping" 1xx HTTP responses
  550. With the use hyper_request_on_informational()
  551. Enable test 155 and 158
  552. Closes #7597
  553. Marc Hoersken (18 Aug 2021)
  554. - tests/*server.pl: flush output before executing subprocess
  555. Also avoid shell processes staying around by using exec.
  556. This is necessary to avoid output data being buffering
  557. inside the process chain of Perl, Bash/Shell and our
  558. test server binaries. On non-Windows systems the exec
  559. will also make the subprocess replace the intermediate
  560. shell, but on Windows it will at least bind the processes
  561. together since there is no real fork or exec available.
  562. See: https://cygwin.com/cygwin-ug-net/highlights.html
  563. and: https://docs.microsoft.com/cpp/c-runtime-library/exec-wexec-functions
  564. Ref: https://github.com/curl/curl/pull/7530#issuecomment-900949010
  565. Reviewed-by: Daniel Stenberg
  566. Reviewed-by: Jay Satiro
  567. Closes #7530
  568. - CI: use GitHub Container Registry instead of Docker Hub
  569. Avoid limits on Docker Hub and improve image pull/download speed.
  570. Closes #7587
  571. Daniel Stenberg (18 Aug 2021)
  572. - openssl: when creating a new context, there cannot be an old one
  573. Remove the previous handling that would call SSL_CTX_free(), and instead
  574. add an assert that halts a debug build if there ever is a context
  575. already set at this point.
  576. Closes #7585
  577. Jay Satiro (18 Aug 2021)
  578. - KNOWN_BUGS: Renegotiate from server may cause hang for OpenSSL backend
  579. Closes https://github.com/curl/curl/issues/6785
  580. Viktor Szakats (17 Aug 2021)
  581. - docs/BINDINGS: URL update
  582. Marc Hoersken (17 Aug 2021)
  583. - tests/server/*.c: align handling of portfile argument and file
  584. 1. Call the internal variable portname (like pidname) everywhere.
  585. 2. Have a variable wroteportfile (like wrotepidfile) everywhere.
  586. 3. Make sure the file is cleaned up on exit (like pidfile).
  587. 4. Add parameter --portfile to usage outputs everywhere.
  588. Reviewed-by: Daniel Stenberg
  589. Replaces #7523
  590. Closes #7574
  591. Daniel Gustafsson (17 Aug 2021)
  592. - KNOWN_BUGS: Fix a number of typos in KNOWN_BUGS
  593. Fixes a set of typos found in section 11.3.
  594. Daniel Stenberg (17 Aug 2021)
  595. - getparameter: fix the --local-port number parser
  596. It could previously get tricked into parsing the uninitialized stack
  597. based buffer.
  598. Reported-by: Brian Carpenter
  599. Closes #7582
  600. - KNOWN_BUGS: Can't use Secure Transport with Crypto Token Kit
  601. Closes #7048
  602. - [Jan Verbeek brought this change]
  603. curl: add warning for ignored data after quoted form parameter
  604. In an argument like `-F 'x=@/etc/hostname;filename="foo"abc'` the `abc`
  605. is ignored. This adds a warning if the ignored data isn't all
  606. whitespace.
  607. Closes #7394
  608. Jay Satiro (17 Aug 2021)
  609. - codeql: fix error "Resource not accessible by integration"
  610. - Enable codeql writing security-events.
  611. GitHub set the default permissions to read, apparently since earlier
  612. this year.
  613. Ref: https://github.com/github/codeql-action/issues/464
  614. Ref: https://github.blog/changelog/2021-04-20-github-actions-control-permissions-for-github_token/
  615. Fixes https://github.com/curl/curl/issues/7575
  616. Closes https://github.com/curl/curl/pull/7576
  617. - tool_operate: Fix --fail-early with parallel transfers
  618. - Abort via progress callback to fail early during parallel transfers.
  619. When a critical error occurs during a transfer (eg --fail-early
  620. constraint) then other running transfers will be aborted via progress
  621. callback and finish with error CURLE_ABORTED_BY_CALLBACK (42). In this
  622. case, the callback error does not become the most recent error and a
  623. custom error message is used for those transfers:
  624. curld --fail --fail-early --parallel
  625. https://httpbin.org/status/404 https://httpbin.org/delay/10
  626. curl: (22) The requested URL returned error: 404
  627. curl: (42) Transfer aborted due to critical error in another transfer
  628. > echo %ERRORLEVEL%
  629. 22
  630. Fixes https://github.com/curl/curl/issues/6939
  631. Closes https://github.com/curl/curl/pull/6984
  632. Daniel Stenberg (17 Aug 2021)
  633. - [Sergey Markelov brought this change]
  634. sectransp: support CURLINFO_CERTINFO
  635. Fixes #4130
  636. Closes #7372
  637. - ngtcp2: remove the acked_crypto_offset struct field init
  638. ... as it is gone from the API upstream.
  639. Closes #7578
  640. - misc: update incorrect copyright year ranges
  641. Closes #7577
  642. - KNOWN_BUGS: HTTP/3 quiche upload large file fails
  643. Closes #7532
  644. - KNOWN_BUGS: CMake build with MIT Kerberos does not work
  645. Closes #6904
  646. - TODO: add asynch getaddrinfo support
  647. Closes #6746
  648. - RELEASE-NOTES: synced
  649. - [Artur Sinila brought this change]
  650. http2: revert call the handle-closed function correctly on closed stream
  651. Reverts 252790c5335a221
  652. Assisted-by: Gergely Nagy
  653. Fixes #7400
  654. Closes #7525
  655. - [Patrick Monnerat brought this change]
  656. auth: do not append zero-terminator to authorisation id in kerberos
  657. RFC4752 Section 3.1 states "The authorization identity is not terminated
  658. with a zero-valued (%x00) octet". Although a comment in code said it may
  659. be needed anyway, nothing confirms it. In addition, servers may consider
  660. it as part of the identity, causing a failure.
  661. Closes #7008
  662. - [Patrick Monnerat brought this change]
  663. auth: use sasl authzid option in kerberos
  664. ... instead of deriving it from active ticket.
  665. Closes #7008
  666. - [Patrick Monnerat brought this change]
  667. auth: we do not support a security layer after kerberos authentication
  668. Closes #7008
  669. - [Patrick Monnerat brought this change]
  670. auth: properly handle byte order in kerberos security message
  671. Closes #7008
  672. - [z2_ brought this change]
  673. x509asn1: fix heap over-read when parsing x509 certificates
  674. Assisted-by: Patrick Monnerat
  675. Closes #7536
  676. - KNOWN_BUGS: Disconnects don't do verbose
  677. Closes #6995
  678. - mailmap: fixup Michał Antoniak
  679. - [Michał Antoniak brought this change]
  680. build: fix compiler warnings
  681. For when CURL_DISABLE_VERBOSE_STRINGS and DEBUGBUILD flags are both
  682. active.
  683. - socks.c : warning C4100: 'lineno': unreferenced formal parameter
  684. (co-authored by Daniel Stenberg)
  685. - mbedtls.c: warning C4189: 'port': local variable is initialized but
  686. not referenced
  687. - schannel.c: warning C4189: 'hostname': local variable is initialized
  688. but not referenced
  689. Cloes #7528
  690. - [Gleb Ivanovsky brought this change]
  691. CODE_STYLE-md: fix bold font style
  692. Markdown gets confused with abundance of asterisks, so use underscores
  693. instead.
  694. Reviewed-by: Daniel Gustafsson
  695. Closes #7569
  696. - [Gleb Ivanovsky brought this change]
  697. CODE_STYLE-md: add missing comma
  698. Reviewed-by: Daniel Gustafsson
  699. Closes #7570
  700. - [Daniel Gustafsson brought this change]
  701. examples/ephiperfifo.c: simplify signal handler
  702. The signal handler registered for SIGINT is only handling SIGINT
  703. so there isn't much need for inspecting the signo. While there,
  704. rename the handler to be more specific.
  705. g_should_exit should really be of sig_atomic_t type, but relying
  706. on autoconf in the examples seems like a bad idea so keep that
  707. for now.
  708. Reviewed-by: Daniel Stenberg
  709. Closes #7310
  710. - c-hyper: initial step for 100-continue support
  711. Enabled test 154
  712. Closes #7568
  713. - [Ikko Ashimine brought this change]
  714. vtls: fix typo in schannel_verify.c
  715. occurence -> occurrence
  716. Closes #7566
  717. - [Emil Engler brought this change]
  718. curl_url_get.3: clarify about path and query
  719. The current man-page lacks some details regarding the obtained path and
  720. query.
  721. Closes #7563
  722. - c-hyper: fix header value passed to debug callback
  723. Closes #7567
  724. Viktor Szakats (12 Aug 2021)
  725. - cleanup: URL updates
  726. - replace broken URL with the one it was most probably pointing to
  727. when added (lib/tftp.c)
  728. - replace broken URL with archive.org link (lib/curl_ntlm_wb.c)
  729. - delete unnecessary protocol designator from archive.org URL
  730. (docs/BINDINGS.md)
  731. Closes #7562
  732. Daniel Stenberg (12 Aug 2021)
  733. - [April King brought this change]
  734. DEPRECATE.md: linkify curl-library mailing list
  735. Closes #7561
  736. - [Barry Pollard brought this change]
  737. output.d: add method to suppress response bodies
  738. Closes #7560
  739. - TODO: remove 'c-ares deviates on http://1346569778'
  740. Fixed since 56a037cc0ad1b2 (7.77.0)
  741. - [Colin O'Dell brought this change]
  742. BINDINGS.md: update links to use https where available
  743. Closes #7558
  744. - asyn-ares.c: move all version number checks to the top
  745. ... and use #ifdef [feature] in the code as per our guidelines.
  746. - ares: use ares_getaddrinfo()
  747. ares_getaddrinfo() is the getaddrinfo() cloned provided by c-ares, introduced
  748. in version 1.16.0.
  749. With older c-ares versions, curl invokes ares_gethostbyname() twice - once for
  750. IPv4 and once for IPv6 to resolve both addresses, and then combines the
  751. returned results.
  752. Reported-by: jjandesmet
  753. Fixes #7364
  754. Closes #7552
  755. - [Tatsuhiro Tsujikawa brought this change]
  756. ngtcp2: utilize crypto API functions to simplify
  757. Closes #7551
  758. - [megatronking brought this change]
  759. ngtcp2: reset the oustanding send buffer again when drained
  760. Closes #7538
  761. Michael Kaufmann (10 Aug 2021)
  762. - progress: fix a compile warning on some systems
  763. lib/progress.c:380:40: warning: conversion to 'long double' from
  764. 'curl_off_t {aka long long int}' may alter its value [-Wconversion]
  765. Closes #7549
  766. Daniel Stenberg (10 Aug 2021)
  767. - RELEASE-NOTES: synced
  768. - http: consider cookies over localhost to be secure
  769. Updated test31.
  770. Added test 392 to verify secure cookies used for http://localhost
  771. Reviewed-by: Daniel Gustafsson
  772. Fixes #6733
  773. Closes #7263
  774. - TODO: erase secrets from heap/stack after use
  775. Closes #7268
  776. Jay Satiro (10 Aug 2021)
  777. - hostip: Make Curl_ipv6works function independent of getaddrinfo
  778. - Do not assume IPv6 is not working when getaddrinfo is not present.
  779. The check to see if IPv6 actually works is now independent of whether
  780. there is any resolver that can potentially resolve a hostname to IPv6.
  781. Prior to this change if getaddrinfo() was not found at compile time then
  782. Curl_ipv6works() would be defined as a macro that returns FALSE.
  783. When getaddrinfo is not found then libcurl is built with CURLRES_IPV4
  784. defined instead of CURLRES_IPV6, meaning that it cannot do IPv6 lookups
  785. in the traditional way. With this commit if libcurl is built with IPv6
  786. support (ENABLE_IPV6) but without getaddrinfo (CURLRES_IPV6), and the
  787. IPv6 stack is actually working, then it is possible for libcurl to
  788. resolve IPv6 addresses by using DoH.
  789. Ref: https://github.com/curl/curl/issues/7483#issuecomment-890765378
  790. Closes https://github.com/curl/curl/pull/7529
  791. - test1565: fix windows build errors
  792. - Use our wait_ms() instead of sleep() since Windows doesn't have the
  793. latter.
  794. - Use a separate variable to keep track of whether the pthread_t thread
  795. id is valid.
  796. On Windows pthread_t is not an integer type. pthread offers no macro for
  797. invalid pthread_t thread id, so validity is kept track of separately.
  798. Closes https://github.com/curl/curl/pull/7527
  799. - [Jeremy Falcon brought this change]
  800. winbuild/README.md: clarify GEN_PDB option
  801. - Document that GEN_PDB option creates an external database.
  802. Ref: https://github.com/curl/curl/issues/7502
  803. Daniel Stenberg (9 Aug 2021)
  804. - [Tatsuhiro Tsujikawa brought this change]
  805. ngtcp2: replace deprecated functions with nghttp3_conn_shutdown_stream_read
  806. Closes #7546
  807. - [Tatsuhiro Tsujikawa brought this change]
  808. ngtcp2: rework the return value handling of ngtcp2_conn_writev_stream
  809. Rework the return value handling of ngtcp2_conn_writev_stream and treat
  810. NGTCP2_ERR_STREAM_SHUT_WR separately.
  811. Closes #7546
  812. - configure: error out if both ngtcp2 and quiche are specified
  813. Reported-by: Vincent Grande
  814. See #7539
  815. Closes #7545
  816. - [Jeff Mears brought this change]
  817. easy: use a custom implementation of wcsdup on Windows
  818. ... so that malloc/free overrides from curl_global_init are used for
  819. wcsdup correctly.
  820. Closes #7540
  821. - zuul: add an mbedtls3 CI job
  822. Closes #7544
  823. - [Benau brought this change]
  824. mbedTLS: initial 3.0.0 support
  825. Closes #7428
  826. - RELEASE-NOTES: synced
  827. - configure.ac: revert bad nghttp2 library detection improvements
  828. This reverts commit b4b34db65f9f8, 673753344c5f and 29c7cf79e8b.
  829. The logic is now back to assuming that the nghttp2 lib is called nghttp2 and
  830. nothing else.
  831. Reported-by: Rui Pinheiro
  832. Reported-by: Alex Crichton
  833. Fixes #7514
  834. Closes #7515
  835. - happy-eyeballs-timeout-ms.d: polish the wording
  836. Reported-by: Josh Soref
  837. Fixes #7433
  838. Closes #7542
  839. - [modbw brought this change]
  840. mbedtls_threadlock: fix unused variable warning
  841. Closes #7393
  842. - [Tatsuhiro Tsujikawa brought this change]
  843. ngtcp2: compile with the latest ngtcp2 and nghttp3
  844. Closes #7541
  845. Marc Hoersken (31 Jul 2021)
  846. - CI/cirrus: reduce compile time with increased parallism
  847. Cirrus CI VMs have 2 CPUs, let's use them also for Windows builds.
  848. Reviewed-by: Daniel Stenberg
  849. Closes #7505
  850. Daniel Stenberg (30 Jul 2021)
  851. - [Bin Lan brought this change]
  852. tool/tests: fix potential year 2038 issues
  853. The length of 'long' in a 32-bit system is 32 bits, which cannot be used
  854. to save timestamps after 2038. Most operating systems have extended
  855. time_t to 64 bits.
  856. Remove the castings to long.
  857. Closes #7466
  858. - compressed.d: it's a request, not an order
  859. Clarified
  860. Reported-by: Dan Jacobson
  861. Reviewed-by: Daniel Gustafsson
  862. Fixes #7516
  863. Closes #7517
  864. - [Bernhard M. Wiedemann brought this change]
  865. tests: make three tests pass until 2037
  866. after 2038 something in test1915 fails on 32-bit OSes
  867. Closes #7512
  868. Daniel Gustafsson (30 Jul 2021)
  869. - connect: remove superfluous conditional
  870. Commit dbd16c3e2 cleaned up the logic for traversing the addrinfos,
  871. but the move left a conditional on ai which no longer is needed as
  872. the while loop reevaluation will cover it.
  873. Closes #7511
  874. Reviewed-by: Carlo Marcelo Arenas Belón
  875. Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  876. Daniel Stenberg (29 Jul 2021)
  877. - RELEASE-NOTES: synced
  878. and bump curlver to 7.79.0 for next release
  879. Marc Hoersken (29 Jul 2021)
  880. - tests/*server.py: remove pidfile on server termination
  881. Avoid pidfile leaking/laying around after server already exited.
  882. Reviewed-by: Daniel Stenberg
  883. Closes #7506
  884. Daniel Gustafsson (27 Jul 2021)
  885. - tool_main: fix typo in comment
  886. The referred to library is NSPR, so fix the switched around characters.
  887. Daniel Stenberg (28 Jul 2021)
  888. - [Aleksandr Krotov brought this change]
  889. bearssl: support CURLOPT_CAINFO_BLOB
  890. Closes #7468
  891. - curl.1: mention "global" flags
  892. Mention options that are "global". A global command line option is one
  893. that doesn't get reset at --next uses and therefore don't need to be
  894. used again.
  895. Reported-by: Josh Soref
  896. Fixes #7457
  897. Closes #7510
  898. - CURLOPT_DOH_URL.3: CURLOPT_OPENSOCKETFUNCTION is not inherited
  899. Reported-by: Daniel Woelfel
  900. Fixes #7441
  901. Closes #7509
  902. - KNOWN_BUGS: add more HTTP/3 problems
  903. Closes #7351
  904. Closes #7339
  905. Closes #7125
  906. Marc Hoersken (27 Jul 2021)
  907. - CI/azure: reduce compile time with increased parallism
  908. Azure Pipelines CI VMs have 2 CPUs, let's use them.
  909. Closes #7489
  910. Jay Satiro (27 Jul 2021)
  911. - [Josh Soref brought this change]
  912. docs: fix grammar
  913. Fixes https://github.com/curl/curl/issues/7444
  914. Fixes https://github.com/curl/curl/issues/7451
  915. Fixes https://github.com/curl/curl/issues/7465
  916. Closes https://github.com/curl/curl/pull/7495
  917. - mail-rcpt.d: fix grammar
  918. Remove confusing sentence that says to specify an e-mail address for
  919. mail transfer, since that's implied.
  920. Reported-by: Josh Soref
  921. Fixes https://github.com/curl/curl/issues/7452
  922. Closes https://github.com/curl/curl/pull/7495
  923. Daniel Stenberg (27 Jul 2021)
  924. - c-hyper: remove the hyper_executor_poll() loop from Curl_http
  925. 1. it's superfluous
  926. 2. it didn't work identically to the Curl_hyper_stream one which could
  927. cause problems like #7486
  928. Pointed-out-by: David Cook
  929. Closes #7499
  930. - curl-openssl.m4: check lib64 for the pkg-config file
  931. OpenSSL recently started putting the libs in $prefix/lib64 on 'make
  932. install', so we check that directory for pkg-config data if the 'lib'
  933. check fails.
  934. Closes #7503
  935. - CURLOPT_SSL_CTX_*.3: tidy up the example
  936. Use the proper code style. Don't store return codes that aren't read.
  937. Copy the same example into CURLOPT_SSL_CTX_FUNCTION.3 as well.
  938. Closes #7500
  939. - example/cookie_interface: fix scan-build printf warning
  940. Follow-up to 4b79c4fb565
  941. Fixes #7497
  942. Closes #7498
  943. - [Josh Soref brought this change]
  944. limit-rate.d: clarify base unit
  945. Fixes #7439
  946. Closes #7494
  947. - [Carlo Marcelo Arenas Belón brought this change]
  948. examples/cookie_interface: avoid printfing time_t directly
  949. time_t representation is undefined and varies on bitsize and signedness,
  950. and as of C11 could be even non integer.
  951. instead of casting to unsigned long (which would truncate in systems
  952. with a 32bit long after 2106) use difftime to get the elapsed time as a
  953. double and print that (without decimals) instead.
  954. alternatively a cast to curl_off_t and its corresponding print
  955. formatting could have been used (at least in POSIX) but portability and
  956. curl agnostic code was prioritized.
  957. Closes #7490
  958. Marc Hoersken (25 Jul 2021)
  959. - tests/servers: remove obsolete pid variable
  960. Variable is not used since pidfile handling moved to util.[ch]
  961. Reviewed-by: Jay Satiro
  962. Closes #7482
  963. - tests/servers: use our platform-aware pid for server verification
  964. The pid used for server verification is later stored as pid2 in
  965. the hash of running test servers and therefore used for shutdown.
  966. The pid used for shutdown must be the platform-aware (Win32) pid
  967. to avoid leaking test servers while running them using Cygwin/msys.
  968. Reviewed-by: Jay Satiro
  969. Closes #7481
  970. - tests/runtests.pl: cleanup copy&paste mistakes and unused code
  971. Reviewed-by: Jay Satiro
  972. Part of #7481
  973. Daniel Stenberg (25 Jul 2021)
  974. - RELEASE-NOTES: synced
  975. bumped to 7.78.1 for next release
  976. - http_proxy: clear 'sending' when the outgoing request is sent
  977. ... so that Curl_connect_getsock() will know how to wait for the socket
  978. to become readable and not writable after the entire CONNECT request has
  979. been issued.
  980. Regression added in 7.77.0
  981. Reported-by: zloi-user on github
  982. Assisted-by: Jay Satiro
  983. Fixes #7155
  984. Closes #7484
  985. Jay Satiro (25 Jul 2021)
  986. - [Josh Soref brought this change]
  987. openssl: fix grammar
  988. Closes https://github.com/curl/curl/pull/7480
  989. - configure.ac: tweak nghttp2 library name fix again
  990. - Change extraction to handle multiple library names returned by
  991. pkg-config (eg a possible scenario with pkg-config --static).
  992. Ref: https://github.com/curl/curl/pull/7472
  993. Closes https://github.com/curl/curl/pull/7485
  994. Dan Fandrich (23 Jul 2021)
  995. - Get rid of the unused HAVE_SIG_ATOMIC_T et. al.
  996. It was added in 2006 but I see no evidence it was ever used.
  997. Jay Satiro (23 Jul 2021)
  998. - docs: change max-filesize caveat again
  999. - Add protocols field to max-filesize.d.
  1000. - Revert wording on unknown file size caveat and do not discuss specific
  1001. protocols in that section.
  1002. Partial revert of ecf0225. All max-filesize options now have the list of
  1003. protocols and it's clearer just to have that list without discussing
  1004. specific protocols in the caveat.
  1005. Reported-by: Josh Soref
  1006. Ref: https://github.com/curl/curl/issues/7453#issuecomment-884128762
  1007. Daniel Stenberg (22 Jul 2021)
  1008. - [Christian Weisgerber brought this change]
  1009. configure: tweak nghttp2 library name fix
  1010. commit 29c7cf79e8b44cf (shipped in 7.78.0) introduced a problem by
  1011. assuming that LIB_H2 does not have any leading whitespace. At least
  1012. OpenBSD's native pkg-config can produce such whitespace, though:
  1013. $ pkg-config --libs-only-l libnghttp2
  1014. -lnghttp2
  1015. As a result, the configure check for libnghttp2 will erroneously fail.
  1016. Bug: https://curl.se/mail/lib-2021-07/0050.html
  1017. Closes #7472
  1018. - [Bastian Krause brought this change]
  1019. docs/MQTT: update state of username/password support
  1020. PR #7243 implemented username/password support for MQTT, so let's drop
  1021. these items from the caveats.
  1022. Signed-off-by: Bastian Krause <bst@pengutronix.de>
  1023. Closes #7474
  1024. - [Oleg Pudeyev brought this change]
  1025. CURLMOPT_TIMERFUNCTION.3: remove misplaced "time"
  1026. Closes #7470
  1027. Version 7.78.0 (21 Jul 2021)
  1028. Daniel Stenberg (21 Jul 2021)
  1029. - RELEASE-NOTES: synced
  1030. curl 7.78.0 release
  1031. - winbuild/MakefileBuild.vc: bump copyright year
  1032. Jay Satiro (21 Jul 2021)
  1033. - docs: mention max-filesize options also apply to MQTT transfers
  1034. Also make it clearer that the caveat 'if the file size is unknown it
  1035. the option will have no effect' may apply to protocols other than FTP
  1036. and HTTP.
  1037. Reported-by: Josh Soref
  1038. Fixes https://github.com/curl/curl/issues/7453
  1039. - [Josh Soref brought this change]
  1040. docs/cmdline: fix grammar and typos
  1041. - [Josh Soref brought this change]
  1042. dump-header.d: Drop suggestion to use for cookie storage
  1043. Since --cookie-jar is the preferred way to store cookies, no longer
  1044. suggest using --dump-header to do so.
  1045. Co-authored-by: Daniel Stenberg
  1046. Closes https://github.com/curl/curl/issues/7414
  1047. - [Josh Soref brought this change]
  1048. doc/cmdline: fix grammar and typos
  1049. Closes https://github.com/curl/curl/pull/7454
  1050. Closes https://github.com/curl/curl/pull/7455
  1051. Closes https://github.com/curl/curl/pull/7456
  1052. Closes https://github.com/curl/curl/pull/7459
  1053. Closes https://github.com/curl/curl/pull/7460
  1054. Closes https://github.com/curl/curl/pull/7461
  1055. Closes https://github.com/curl/curl/pull/7462
  1056. Closes https://github.com/curl/curl/pull/7463
  1057. Daniel Stenberg (20 Jul 2021)
  1058. - vtls: fix connection reuse checks for issuer cert and case sensitivity
  1059. CVE-2021-22924
  1060. Reported-by: Harry Sintonen
  1061. Bug: https://curl.se/docs/CVE-2021-22924.html
  1062. - sectransp: check for client certs by name first, then file
  1063. CVE-2021-22926
  1064. Bug: https://curl.se/docs/CVE-2021-22926.html
  1065. Assisted-by: Daniel Gustafsson
  1066. Reported-by: Harry Sintonen
  1067. - telnet: fix option parser to not send uninitialized contents
  1068. CVS-2021-22925
  1069. Reported-by: Red Hat Product Security
  1070. Bug: https://curl.se/docs/CVE-2021-22925.html
  1071. Jay Satiro (20 Jul 2021)
  1072. - connect: fix wrong format specifier in connect error string
  1073. 0842175 (not in any release) used the wrong format specifier (long int)
  1074. for timediff_t. On an OS such as Windows libcurl's timediff_t (usually
  1075. 64-bit) is bigger than long int (32-bit). In 32-bit Windows builds the
  1076. upper 32-bits of the timediff_t were erroneously then used by the next
  1077. format specifier. Usually since the timeout isn't larger than 32-bits
  1078. this would result in null as a pointer to the string with the reason for
  1079. the connection failing. On other OSes or maybe other compilers it could
  1080. probably result in garbage values (ie crash on deref).
  1081. Before:
  1082. Failed to connect to localhost port 12345 after 1201 ms: (nil)
  1083. After:
  1084. Failed to connect to localhost port 12345 after 1203 ms: Connection refused
  1085. Closes https://github.com/curl/curl/pull/7449
  1086. - winbuild: support alternate nghttp2 static lib name
  1087. - Support both nghttp2.lib and nghttp2_static.lib for static nghttp2.
  1088. nghttp2 briefly changed its static lib name to nghttp2_static, but then
  1089. made the _static suffix optional.
  1090. Ref: https://github.com/nghttp2/nghttp2/pull/1394
  1091. Ref: https://github.com/nghttp2/nghttp2/pull/1418
  1092. Ref: https://github.com/nghttp2/nghttp2/issues/1466
  1093. Reported-by: Pierre Yager
  1094. Fixes https://github.com/curl/curl/issues/7446
  1095. Closes https://github.com/curl/curl/pull/7447
  1096. - [Josh Soref brought this change]
  1097. docs/cmdline: fix grammar and typos
  1098. Closes https://github.com/curl/curl/pull/7432
  1099. Closes https://github.com/curl/curl/pull/7436
  1100. Closes https://github.com/curl/curl/pull/7438
  1101. Closes https://github.com/curl/curl/pull/7440
  1102. Closes https://github.com/curl/curl/pull/7445
  1103. - [Josh Soref brought this change]
  1104. delegation.d: mention what happens when used multiple times
  1105. Closes https://github.com/curl/curl/pull/7408
  1106. - [Josh Soref brought this change]
  1107. create-file-mode.d: mention what happens when used multiple times
  1108. Closes https://github.com/curl/curl/pull/7407
  1109. - [Josh Soref brought this change]
  1110. config.d: split comments and option-per line
  1111. Closes https://github.com/curl/curl/pull/7405
  1112. Daniel Stenberg (19 Jul 2021)
  1113. - misc: copyright year range updates
  1114. - mailmap: add Tobias and Timur
  1115. Daniel Gustafsson (18 Jul 2021)
  1116. - [Josh Soref brought this change]
  1117. docs: spell out directories instead of dirs in create-dirs
  1118. Write out directories rather than using the dirs abbrevation. Also
  1119. use plural form consistently, even if the code in the end might just
  1120. create a single directory.
  1121. Closes #7406
  1122. Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  1123. Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
  1124. - [Tobias Nyholm brought this change]
  1125. docs: correct spelling errors and a broken link
  1126. Update grammar and spelling in docs and source code comments.
  1127. Closes: #7427
  1128. Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  1129. Marc Hoersken (18 Jul 2021)
  1130. - CI/cirrus: install impacket from PyPI instead of FreeBSD packages
  1131. Availability of impacket as FreeBSD package is too flaky.
  1132. Stick to legacy version of cryptography which still
  1133. supports OpenSSL version 1.0.2 due to FreeBSD 11.
  1134. Reviewed-by: Daniel Stenberg
  1135. Closes #7418
  1136. Daniel Stenberg (18 Jul 2021)
  1137. - [Josh Soref brought this change]
  1138. docs/cmdline: mention what happens when used multiple times
  1139. For --dns-ipv4-addr, --dns-ipv6-addr and --dns-servers
  1140. Closes #7410
  1141. Closes #7411
  1142. Closes #7412
  1143. - [Michał Antoniak brought this change]
  1144. lib: fix compiler warnings with CURL_DISABLE_NETRC
  1145. warning C4189: 'netrc_user_changed': local variable is initialized but
  1146. not referenced
  1147. warning C4189: 'netrc_passwd_changed': local variable is initialized but
  1148. not referenced
  1149. Closes #7423
  1150. - disable-epsv.d: remove duplicate "(FTP)"
  1151. ... since the tooling adds that to the output based on the "Protocols:"
  1152. tag.
  1153. - [Max Zettlmeißl brought this change]
  1154. docs: make the documentation for --etag-save match the program behaviour
  1155. When using curl with the option `--etag-save` I expected it to save the
  1156. ETag without its surrounding quotes, as stated by the documentation in
  1157. the repository and by the generated man pages.
  1158. My first endeavour was to fix the program, but while investigating the
  1159. history of the relevant parts, I discovered that curl once saved the
  1160. ETag without the quotes. This was undone by Daniel Stenberg in commit
  1161. `98c94596f5928840177b6bd3c7b0f0dd03a431af`, therefore I decided that in
  1162. this case the documentation should be adjusted to match the behaviour of
  1163. curl.
  1164. The changed save behaviour also made parts of the `--etag-compare`
  1165. documentation wrong or superfluous, so I adjusted those accordingly.
  1166. Closes #7429
  1167. - [Josh Soref brought this change]
  1168. write-out.d: add missing periods
  1169. Closes #7404
  1170. - [Josie Huddleston brought this change]
  1171. easy: during upkeep, attach Curl_easy to connections in the cache
  1172. During the protocol-specific parts of connection upkeep, some code
  1173. assumes that the data->conn pointer already is set correctly. However,
  1174. there's currently no guarantee of that in the code.
  1175. This fix temporarily attaches each connection to the Curl_easy object
  1176. before performing the protocol-specific connection check on it, in a
  1177. similar manner to the connection checking in extract_if_dead().
  1178. Fixes #7386
  1179. Closes #7387
  1180. Reported-by: Josie Huddleston
  1181. - [Josh Soref brought this change]
  1182. cleanup: spell DoH with a lowercase o
  1183. Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
  1184. Closes #7413
  1185. - [Josh Soref brought this change]
  1186. TheArtOfHttpScripting: polish
  1187. - add missing backticks and comma
  1188. - fix proxy description:
  1189. * example proxy isn't local
  1190. * locally doesn't really make sense
  1191. Closes #7416
  1192. - [Josh Soref brought this change]
  1193. form.d: add examples of `,`/`;` for file[name]
  1194. Fixes #7415
  1195. Closes #7417
  1196. - [Michał Antoniak brought this change]
  1197. mbedtls: Remove unnecessary include
  1198. - curl_setup.h: all references to mbedtls_md4* functions and structures
  1199. are in the md4.c. This file already includes the <mbedtls/md4.h> file
  1200. along with the file existence control (defined (MBEDTLS_MD4_C))
  1201. - curl_ntlm_core.c: unnecessary include - repeated below
  1202. Closes #7419
  1203. - RELEASE-NOTES: synced
  1204. Jay Satiro (16 Jul 2021)
  1205. - [User Sg brought this change]
  1206. multi: fix crash in curl_multi_wait / curl_multi_poll
  1207. Appears to have been caused by 51c0ebc (precedes 7.77.0) which added a
  1208. VALID_SOCK check to one of the loops through the sockets but not the
  1209. other.
  1210. Reported-by: sylgal@users.noreply.github.com
  1211. Authored-by: sylgal@users.noreply.github.com
  1212. Fixes https://github.com/curl/curl/issues/7379
  1213. Closes https://github.com/curl/curl/pull/7389
  1214. - [Daniel Gustafsson brought this change]
  1215. tool_help: remove unused define
  1216. The PRINT_LINES_PAUSE macro is no longer used, and has been mostly
  1217. cleaned out but one occurrence remained.
  1218. Closes https://github.com/curl/curl/pull/7380
  1219. - [Sergey Markelov brought this change]
  1220. build: fix compiler warnings when CURL_DISABLE_VERBOSE_STRINGS
  1221. fix compiler warnings about unused variables and parameters when
  1222. built with --disable-verbose.
  1223. Closes https://github.com/curl/curl/pull/7377
  1224. - [Andrea Pappacoda brought this change]
  1225. build: fix IoctlSocket FIONBIO check
  1226. Prior to this change HAVE_IOCTLSOCKET_CAMEL_FIONBIO mistakenly checked
  1227. for (lowercase) ioctlsocket when it should have checked for IoctlSocket.
  1228. Closes https://github.com/curl/curl/pull/7375
  1229. - [Timur Artikov brought this change]
  1230. configure: fix nghttp2 library name for static builds
  1231. Don't hardcode the nghttp2 library name,
  1232. because it can vary, be "nghttp2_static" for example.
  1233. Fixes https://github.com/curl/curl/issues/7367
  1234. Closes https://github.com/curl/curl/pull/7368
  1235. Gisle Vanem (16 Jul 2021)
  1236. - [PellesC] fix _lseeki64() macro
  1237. - [SChannel] Use '_tcsncmp()' instead
  1238. Revert previous change for PellesC.
  1239. Instead replace all use of `_tcsnccmp()` with `_tcsncmp()`.
  1240. - [PellesC] missing '_tcsnccmp'
  1241. PellesC compiler does not have this macro in it's `<tchar.h>`
  1242. Daniel Gustafsson (14 Jul 2021)
  1243. - TODO: add mention of mbedTLS 3 incompatibilities
  1244. Wyatt OʼDay reported in #7385 that mbedTLS isn't backwards compatible
  1245. and curl no longer builds with it. Document the need to fix our support
  1246. until so has been done.
  1247. Closes #7390
  1248. Fixes #7385
  1249. Reported-by: Wyatt OʼDay
  1250. Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
  1251. - docs: fix inconsistencies in EGDSOCKET documentation
  1252. Only the OpenSSL backend actually use the EGDSOCKET, and also use
  1253. TLS consistently rather than mixing SSL and TLS. While there, also
  1254. fix a minor spelling nit.
  1255. Closes: #7391
  1256. Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
  1257. - [Борис Верховский brought this change]
  1258. docs: document missing arguments to commands
  1259. This is a followup to commit f410b9e538129e77607fef1 fixing a few
  1260. more commands which takes arguments.
  1261. Closes #7382
  1262. Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
  1263. - [Randolf J brought this change]
  1264. docs: fix incorrect argument name reference
  1265. The documentation for the read callback was erroneously referencing
  1266. the nitems argument by nmemb. The error was introduced in commit
  1267. ce0881edee3c7.
  1268. Closes #7383
  1269. Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
  1270. - [Борис Верховский brought this change]
  1271. tool_help: Document that --tlspassword takes a password
  1272. Closes #7378
  1273. Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  1274. - scripts: Fix typo in release-notes instructions
  1275. The command to run had a typo in the pathname which prevented copy
  1276. pasting it to work, which has annoyed me enough to fix this now.
  1277. - RELEASE-NOTES: synced
  1278. Jay Satiro (10 Jul 2021)
  1279. - write-out.d: Clarify urlnum is not unique for de-globbed URLs
  1280. Reported-by: Коваленко Анатолий Викторович
  1281. Fixes https://github.com/curl/curl/issues/7342
  1282. Closes https://github.com/curl/curl/pull/7369
  1283. Daniel Gustafsson (3 Jul 2021)
  1284. - [William Desportes brought this change]
  1285. docs: Fix typos
  1286. Closes: #7370
  1287. Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
  1288. Daniel Stenberg (8 Jul 2021)
  1289. - [Jonathan Wernberg brought this change]
  1290. Revert "ftp: Expression 'ftpc->wait_data_conn' is always false"
  1291. The reverted commit introduced a logic error in code that was
  1292. correct.
  1293. The client using libcurl would notice the error since FTP file
  1294. uploads in active transfer mode would somtimes complete with
  1295. success despite no transfer having been performed and the
  1296. "uploaded" file thus not being on the remote server afterwards.
  1297. The FTP server would notice the error because it receives a
  1298. RST on the data connection it has established with the client
  1299. before any data was transferred at all.
  1300. The logic error happens if the STOR response from the server have
  1301. arrived by the time ftp_multi_statemach() in the affected code path
  1302. is called, but the incoming data connection have not arrived yet.
  1303. In that case, the processing of the STOR response will cause
  1304. 'ftpc->wait_data_conn' to be set to TRUE, contradicting the comment
  1305. in the code. Since 'complete' will also be set, later logic would
  1306. believe the transfer was done.
  1307. In most cases, the STOR response will not have arrived yet when
  1308. the affected code path is executed, or the incoming connection will
  1309. also have arrived, and thus the error would not express itself.
  1310. But if the speed difference of the device using libcurl and the
  1311. FTP server is exactly right, the error may happen as often as in
  1312. one out of hundred file transfers.
  1313. This reverts commit 49f3117a238b6eac0e22a32f50699a9eddcb66ab.
  1314. Bug: https://curl.se/mail/lib-2021-07/0025.html
  1315. Closes #7362
  1316. - msnprintf: return number of printed characters excluding null byte
  1317. ... even when the output is "capped" by the maximum length argument.
  1318. Clarified in the docs.
  1319. Closes #7361
  1320. - infof: remove newline from format strings, always append it
  1321. - the data needs to be "line-based" anyway since it's also passed to the
  1322. debug callback/application
  1323. - it makes infof() work like failf() and consistency is good
  1324. - there's an assert that triggers on newlines in the format string
  1325. - Also removes a few instances of "..."
  1326. - Removes the code that would append "..." to the end of the data *iff*
  1327. it was truncated in infof()
  1328. Closes #7357
  1329. - examples/multi-single: fix scan-build warning
  1330. warning: Value stored to 'mc' during its initialization is never read
  1331. Follow-up to ae8e11ed5fd2ce
  1332. Closes #7360
  1333. - wolfssl: failing to set a session id is not reason to error out
  1334. ... as it is *probably* just timed out.
  1335. Reported-by: Francisco Munoz
  1336. Closes #7358
  1337. - docs/examples: use curl_multi_poll() in multi examples
  1338. The API is soon two years old and deserves being shown as the primary
  1339. way to drive multi code as it makes it much easier to write code.
  1340. multi-poll: removed
  1341. multi-legacy: add to show how we did multi API use before
  1342. curl_multi_wait/poll.
  1343. Closes #7352
  1344. - KNOWN_BUGS: flaky Windows CI builds
  1345. Closes #6972
  1346. - RELEASE-NOTES: synced
  1347. - test1147: hyper doesn't allow "crazy" request headers like built-in
  1348. ... so strip that from the test.
  1349. Closes #7349
  1350. - c-hyper: bail on too long response headers
  1351. To match with built-in behaviors. Makes test 1154 work.
  1352. Closes #7350
  1353. - test1151: added missing CRLF to work with hyper
  1354. Closes #7350
  1355. - c-hyper: add support for transfer-encoding in the request
  1356. Closes #7348
  1357. - [Andrea Pappacoda brought this change]
  1358. cmake: remove libssh2 feature checks
  1359. libssh2 features are detected based on version since commit
  1360. 9dbbba997608f7c3c5de1c627c77c8cd2aa85b73
  1361. Closes #7343
  1362. - test1116: hyper doesn't pass through "surprise-trailers"
  1363. Closes #7344
  1364. - socks4: scan for the IPv4 address in resolve results
  1365. Follow-up to 84d2839740 which changed the resolving to always resolve
  1366. both address families, but since SOCKS4 only supports IPv4 it should
  1367. scan for and use the first available IPv4 address.
  1368. Reported-by: shithappens2016 on github
  1369. Fixes #7345
  1370. Closes #7346
  1371. Jay Satiro (5 Jul 2021)
  1372. - proto.d: fix formatting for paragraphs after margin changes
  1373. Closes https://github.com/curl/curl/pull/7341
  1374. - pinnedpubkey.d: fix formatting for version support lists
  1375. Closes https://github.com/curl/curl/pull/7340
  1376. Daniel Stenberg (2 Jul 2021)
  1377. - TODO: "Support in-memory certs/ca certs/keys" done
  1378. Has been suppored for a while now with the *BLOB options.
  1379. - examples: safer and more proper read callback logic
  1380. The same callback code is used in:
  1381. imap-append.c
  1382. smtp-authzid.c
  1383. smtp-mail.c
  1384. smtp-multi.c
  1385. smtp-ssl.c
  1386. smtp-tls.c
  1387. It should not assume that it can copy full lines into the buffer as it
  1388. will encourage sloppy coding practices. Instead use byte-wise logic and
  1389. check/acknowledge the buffer size appropriately.
  1390. Reported-by: Harry Sintonen
  1391. Fixes #7330
  1392. Closes #7331
  1393. - test1519: adjusted to work with hyper
  1394. Closes #7333
  1395. - test1518: adjusted to work with hyper
  1396. ... by making sure the stdout output doesn't look like HTTP headers.
  1397. Closes #7333
  1398. - test1514: add a CRLF to the response to make it correct
  1399. Makes hyper accept it fine instead returning HYPERE_UNEXPECTED_EOF on
  1400. us.
  1401. Closes #7334
  1402. - formdata: avoid "Argument cannot be negative" warning
  1403. ... when converting a curl_off_t to size_t, by using
  1404. CURL_ZERO_TERMINATED before passing the argument to the function.
  1405. Detected by Coverity CID 1486590.
  1406. Closes #7328
  1407. Assisted-by: Daniel Gustafsson
  1408. - lib: more %u for port and int for %*s fixes
  1409. Detected by Coverity
  1410. Closes #7329
  1411. - doh: (void)-prefix call to curl_easy_setopt
  1412. - lib: fix type of len passed to *printf's %*s
  1413. ... it needs to be 'int'. Detected by Coverity CID 1486611 (etc)
  1414. Closes #7326
  1415. - lib: use %u instead of %ld for port number printf
  1416. Follow-up to 764c6bd3bf which changed the type of some port number
  1417. fields. Detected by Coverity (CID 1486624) etc.
  1418. Closes #7325
  1419. - version: turn version number functions into returning void
  1420. ... as we never use the return codes from them.
  1421. Reviewed-by: Daniel Gustafsson
  1422. Closes #7319
  1423. - mqtt: extend the error message for no topic
  1424. ... and mention that it needs URL encoding.
  1425. Reported-by: Peter Körner
  1426. Fixes #7316
  1427. Closes #7317
  1428. - formdata: correct typecast in curl_mime_data call
  1429. Coverity pointed out it the mismatch. CID 1486590
  1430. Closes #7327
  1431. - url: (void)-prefix a curl_url_get() call
  1432. Coverity (CID 1486645) pointed out a use of curl_url_get() in the
  1433. parse_proxy function where the return code wasn't checked. A
  1434. (void)-prefix makes the intention obvious.
  1435. Closes #7320
  1436. - glob: pass an 'int' as len when using printf's %*s
  1437. Detected by Coverity CID 1486629.
  1438. Closes #7324
  1439. - vtls: use free() not curl_free()
  1440. curl_free() is provided for users of the API to free returned data,
  1441. there's no need to use it internally.
  1442. Closes #7318
  1443. - zuul: use the new rustls directory name
  1444. Follow-up to 6d972c8b1cbb3 which missed updating this directory name.
  1445. Also no longer call it crustls in the docs and bump to rusttls-ffi 0.7.1
  1446. Closes #7311
  1447. Jay Satiro (29 Jun 2021)
  1448. - http: fix crash in rate-limited upload
  1449. - Don't set the size of the piece of data to send to the rate limit if
  1450. that limit is larger than the buffer size that will hold the piece.
  1451. Prior to this change if CURLOPT_MAX_SEND_SPEED_LARGE
  1452. (curl tool: --limit-rate) was set then it was possible that a temporary
  1453. buffer used for uploading could be written to out of bounds. A likely
  1454. scenario for this would be a non-trivial amount of post data combined
  1455. with a rate limit larger than CURLOPT_UPLOAD_BUFFERSIZE (default 64k).
  1456. The bug was introduced in 24e469f which is in releases since 7.76.0.
  1457. perl -e "print '0' x 200000" > tmp
  1458. curl --limit-rate 128k -d @tmp httpbin.org/post
  1459. Reported-by: Richard Marion
  1460. Fixes https://github.com/curl/curl/issues/7308
  1461. Closes https://github.com/curl/curl/pull/7315
  1462. Daniel Stenberg (29 Jun 2021)
  1463. - copyright: add boiler-plate headers to CI config files
  1464. And whitelist .zuul.ignore
  1465. Closes #7314
  1466. - CI: remove travis details
  1467. Rename still used leftovers to "zuul" as that's now the CI using them.
  1468. Closes #7313
  1469. - RELEASE-NOTES: synced
  1470. - openssl: avoid static variable for seed flag
  1471. Avoid the race condition risk by instead storing the "seeded" flag in
  1472. the multi handle. Modern OpenSSL versions handle the seeding itself so
  1473. doing the seeding once per multi-handle instead of once per process is
  1474. less of an issue.
  1475. Reported-by: Gerrit Renker
  1476. Fixes #7296
  1477. Closes #7306
  1478. - configure: inhibit the implicit-fallthrough warning on gcc-12
  1479. ... since it no longer acknowledges the comment markup we use for that
  1480. purpose.
  1481. Reported-by: Younes El-karama
  1482. Fixes #7295
  1483. Closes #7307
  1484. Daniel Gustafsson (28 Jun 2021)
  1485. - [Andrei Rybak brought this change]
  1486. misc: fix typos in comments which repeat a word
  1487. Fix typos in code comments which repeat various words. In trivial
  1488. cases, just delete the repeated word. Reword the affected sentence in
  1489. "lib/url.c" for it to make sense.
  1490. Closes #7303
  1491. Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
  1492. Daniel Stenberg (27 Jun 2021)
  1493. - lib677: make it survive torture testing
  1494. Follow-up to a5ab72d5edd7
  1495. Closes #7300
  1496. - [Tommy Chiang brought this change]
  1497. docs/BINDINGS: fix outdated links
  1498. * luacurl page is now not accessible, fix it with wayback machine page
  1499. * Scheme one seems not providing https now, change it back to http one
  1500. Closes #7301
  1501. - [Jacob Hoffman-Andrews brought this change]
  1502. curstls: bump crustls version and use new URL
  1503. crustls moved to https://github.com/rustls/rustls-ffi. This also bumps
  1504. the expected version to 0.7.0.
  1505. Closes #7297
  1506. - RELEASE-NOTES: synced
  1507. - examples: length-limit two sscanf() uses of %s
  1508. Reported-by: Jishan Shaikh
  1509. Fixes #7293
  1510. Closes #7294
  1511. - [Richard Whitehouse brought this change]
  1512. multi: alter transfer timeout ordering
  1513. - Check whether a connection has succeded before checking whether it's
  1514. timed out.
  1515. This means if we've connected quickly, but subsequently been
  1516. descheduled, we allow the connection to succeed. Note, if we timeout,
  1517. but between checking the timeout, and connecting to the server the
  1518. connection succeeds, we will allow it to go ahead. This is viewed as
  1519. an acceptable trade off.
  1520. - Add additional failf logging around failed connection attempts to
  1521. propogate the cause up to the caller.
  1522. Co-Authored-by: Martin Howarth
  1523. Closes #7178
  1524. - test677: IMAP CONNECT_ONLY, custom command and then exit
  1525. Adjusted ftpserver.pl to add support for the IMAP IDLE command
  1526. Adjusted test 660 to sync with the fix
  1527. - multi: do not switch off connect_only flag when closing
  1528. ... as it made protocol specific disconnect commands wrongly get used.
  1529. Bug: https://curl.se/mail/lib-2021-06/0024.html
  1530. Reported-by: Aleksander Mazur
  1531. Closes #7288
  1532. - http: make the haproxy support work with unix domain sockets
  1533. ... it should then pass on "PROXY UNKNOWN" since it doesn't know the
  1534. involved IP addresses.
  1535. Reported-by: Valentín Gutiérrez
  1536. Fixes #7290
  1537. Closes #7291
  1538. - [Xiang Xiao brought this change]
  1539. curl.h: include sys/select.h for NuttX RTOS
  1540. Closes #7287
  1541. - [Bin Meng brought this change]
  1542. curl.h: remove the execution bit
  1543. The execution bit of curl.h file was wrongly added:
  1544. commit 2621025d6f96 ("curl.h: <sys/select.h> is supported by VxWorks7")
  1545. and should be removed.
  1546. Follow-up to 2621025d6f96 ("curl.h: <sys/select.h> is supported by VxWorks7")
  1547. Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
  1548. Closes #7286
  1549. - [Bin Lan brought this change]
  1550. curl.h: <sys/select.h> is supported by VxWorks7
  1551. Closes #7285
  1552. - [Bachue Zhou brought this change]
  1553. quiche: use send() instead of sendto() to avoid macOS issue
  1554. sendto() always returns "Socket is already connected" error on macos
  1555. Closes #7260
  1556. - [Li Xinwei brought this change]
  1557. cmake: fix support for UnixSockets feature on Win32
  1558. Move the definition of sockaddr_un struct from config-win32.h to
  1559. curl_setup.h, so that it could be shared by all build systems.
  1560. Add ADDRESS_FAMILY typedef for old mingw, now old mingw can also use
  1561. unix sockets.
  1562. Also fix the build of tests/server/sws.c on Win32 when USE_UNIX_SOCKETS
  1563. is defined.
  1564. Closes #7034
  1565. - [Gregory Muchka brought this change]
  1566. hostip: (macOS) free returned memory of SCDynamicStoreCopyProxies
  1567. From Apples documentation on SCDynamicStoreCopyProxies, "Return Value: A
  1568. dictionary of key-value pairs that represent the current internet proxy
  1569. settings, or NULL if no proxy settings have been defined or if an error
  1570. occurred. You must release the returned value."
  1571. Failure to release the returned value of SCDynamicStoreCopyProxies can
  1572. result in a memory leak.
  1573. Source: https://developer.apple.com/documentation/systemconfiguration/1517088-scdynamicstorecopyproxies
  1574. Closes #7265
  1575. - RELEASE-NOTES: synced
  1576. Jay Satiro (21 Jun 2021)
  1577. - vtls: fix warning due to function prototype mismatch
  1578. b09c8ee changed the function prototype. Caught by Visual Studio.
  1579. - curl_multibyte: Remove local encoding fallbacks
  1580. - If the UTF-8 to UTF-16 conversion fails in Windows Unicode builds then
  1581. no longer fall back to assuming the string is in a local encoding.
  1582. Background:
  1583. Some functions in Windows Unicode builds must convert UTF-8 to UTF-16 to
  1584. pass to the Windows CRT API wide-character functions since in Windows
  1585. UTF-8 is not a valid locale (or at least 99% of the time right now).
  1586. Prior to this change if the Unicode encoding conversion failed then
  1587. libcurl would assume, for backwards compatibility with applications that
  1588. may have written their code for non-Unicode builds, attempt to convert
  1589. the string from local encoding to UTF-16.
  1590. That type of "best effort" could theoretically cause some type of
  1591. security or other problem if a string that was locally encoded was also
  1592. valid UTF-8, and therefore an unexpected UTF-8 to UTF-16 conversion
  1593. could occur.
  1594. Ref: https://github.com/curl/curl/pull/7246
  1595. Closes https://github.com/curl/curl/pull/7257
  1596. Daniel Stenberg (20 Jun 2021)
  1597. - curl_endian: remove the unused Curl_write64_le function
  1598. The last usage was removed in cca455a36
  1599. Closes #7280
  1600. - vtls: only store TIMER_APPCONNECT for non-proxy connect
  1601. Introducing a 'isproxy' argument to the connect function so that it
  1602. knows wether to store the time stamp or not.
  1603. Reported-by: Yongkang Huang
  1604. Fixes #7274
  1605. Closes #7274
  1606. - gnutls: set the preferred TLS versions in correct order
  1607. Regression since 781864bedbc57 (curl 7.77.0)
  1608. Reported-by: civodul on github
  1609. Assisted-by: Nikos Mavrogiannopoulos
  1610. Fixes #7277
  1611. Closes #7278
  1612. - [Gergely Nagy brought this change]
  1613. configure/cmake: remove checks for unused gethostbyaddr and gethostbyaddr_r
  1614. Closes #7276
  1615. - [Gergely Nagy brought this change]
  1616. configure/cmake: remove checks for unused inet_ntoa and inet_ntoa_r
  1617. Closes #7276
  1618. - [Gergely Nagy brought this change]
  1619. configure/cmake: remove unused define HAVE_PERROR
  1620. Closes #7276
  1621. - [Gergely Nagy brought this change]
  1622. configure: remove unused check for gai_strerror
  1623. Closes #7276
  1624. - [Gergely Nagy brought this change]
  1625. configure/cmake: remove unused define HAVE_FREEIFADDRS
  1626. Closes #7276
  1627. - [Gergely Nagy brought this change]
  1628. configure/cmake: remove unused define HAVE_FORK
  1629. Closes #7276
  1630. - [Gergely Nagy brought this change]
  1631. configure/cmake: remove unused define HAVE_FDOPEN
  1632. Closes #7276
  1633. - [Gergely Nagy brought this change]
  1634. configure/cmake: remove checks for unused sgtty.h
  1635. Closes #7276
  1636. - [Gergely Nagy brought this change]
  1637. configure/cmake: remove remaining checks for rsa.h
  1638. Closes #7276
  1639. - [Gergely Nagy brought this change]
  1640. configure/cmake: remove remaining checks for err.h
  1641. Closes #7276
  1642. - [Gergely Nagy brought this change]
  1643. configure/cmake: remove remaining checks for crypto.h
  1644. Closes #7276
  1645. - [Gergely Nagy brought this change]
  1646. configure/cmake: remove checks for unused getservbyport_r
  1647. Closes #7276
  1648. - --socks4[a]: clarify where the host name is resolved
  1649. Closes #7273
  1650. - libcurl-security.3: mention file descriptors and forks
  1651. ... and move the security report section last.
  1652. Reported-by: Harry Sintonen
  1653. Closes #7270
  1654. - [Alex Xu (Hello71) brought this change]
  1655. configure.ac: make non-executable
  1656. it needs to be processed by autoconf or autoreconf, and doesn't have a
  1657. suitable shebang to be directly executed. other projects normally set
  1658. configure.ac -x.
  1659. Closes #7272
  1660. - configure: do not strip out debug flags
  1661. To allow users to set them when invoking configure without using
  1662. --with-debug.
  1663. Reported-by: Alex Xu
  1664. Fixes #7216
  1665. Closes #7267
  1666. - libssh2: limit time a disconnect can take to 1 second
  1667. Closes #7271
  1668. - TLS: prevent shutdown loops to get stuck
  1669. ... by making sure the loops are only allowed to read the shutdown
  1670. traffic a limited number of times.
  1671. Reported-by: Harry Sintonen
  1672. Closes #7271
  1673. - hyper: propagate errors back up from read callbacks
  1674. Makes test 513 work with hyper
  1675. Closes #7266
  1676. - KNOWN_BUGS: Negotiate on Windows fails
  1677. Closes #5881
  1678. - KNOWN_BUGS: renames instead of locking for atomic operations
  1679. Closes #6882
  1680. Closes #6884
  1681. - zuul: add two missing CI jobs
  1682. ... that were configured, just not run
  1683. Closes #7261
  1684. Viktor Szakats (15 Jun 2021)
  1685. - idn: fix libidn2 with windows unicode builds
  1686. Unicode Windows builds use UTF-8 strings internally in libcurl,
  1687. so make sure to call the UTF-8 flavour of the libidn2 API. Also
  1688. document that Windows builds with libidn2 and UNICODE do expect
  1689. CURLOPT_URL as an UTF-8 string.
  1690. Reported-by: dEajL3kA on github
  1691. Assisted-by: Jay Satiro
  1692. Reviewed-by: Marcel Raad
  1693. Closes #7246
  1694. Fixes #7228
  1695. Daniel Stenberg (15 Jun 2021)
  1696. - curl_url_set: reject spaces in URLs w/o CURLU_ALLOW_SPACE
  1697. They were never officially allowed and slipped in only due to sloppy
  1698. parsing. Spaces (ascii 32) should be correctly encoded (to %20) before
  1699. being part of a URL.
  1700. The new flag bit CURLU_ALLOW_SPACE when a full URL is set, makes libcurl
  1701. allow spaces.
  1702. Updated test 1560 to verify.
  1703. Closes #7073
  1704. - RELEASE-NOTES: synced
  1705. ... and bump to version 7.78.0 for the next planned release.
  1706. Jay Satiro (15 Jun 2021)
  1707. - docs: Remove outdated curl tool limitation
  1708. - Document that HTTP/2 multiplexing is supported by the curl tool when
  1709. parallel transfers are used.
  1710. Supported since 7.66.0 via --parallel, but the doc wasn't updated.
  1711. Closes https://github.com/curl/curl/pull/7259
  1712. - http2: Clarify 'Using HTTP2' verbose message
  1713. - Change phrasing from multi-use to multiplexing since the former may
  1714. not be as well understood.
  1715. Before: * Using HTTP2, server supports multi-use
  1716. After: * Using HTTP2, server supports multiplexing
  1717. Bug: https://github.com/curl/curl/discussions/7255
  1718. Reported-by: David Hu
  1719. Closes https://github.com/curl/curl/pull/7258
  1720. Daniel Stenberg (14 Jun 2021)
  1721. - winbuild/README: VC should be set to 6 'or larger'
  1722. Previously it listed all versions up to 15 (missing 16) but this new
  1723. phrasing is more open ended.
  1724. Reported-by: Hugh Macdonald
  1725. Fixes #7253
  1726. Closes #7254
  1727. - [Jacob Hoffman-Andrews brought this change]
  1728. rustls: remove native_roots fallback
  1729. For the commandline tool, we expect to be passed
  1730. SSL_CONN_CONFIG(CAfile); for library use, the use should pass a set of
  1731. trusted roots (like in other TLS backends).
  1732. This also removes a dependency on Security.framework when building on
  1733. macOS.
  1734. Closes #7250
  1735. - [Albin Vass brought this change]
  1736. travis: remove jobs that have migrated to zuul
  1737. Closes #7245
  1738. - [Mohammed Naser brought this change]
  1739. CI: add jobs using Zuul
  1740. It also includes a few changes to get the builds going:
  1741. - Added autoconf to common dependencies
  1742. - Added automake to common dependencies
  1743. - Added libtool to common dependencies
  1744. - Added libssl-dev to common dependencies
  1745. Co-authored-by: Albin Vass
  1746. Closes #7245
  1747. - netrc: skip 'macdef' definitions
  1748. Add test 494 to verify
  1749. Reported-by: Harry Sintonen
  1750. Fixes #7238
  1751. Closes #7244
  1752. - multi: add scan-build-6 work-around in curl_multi_fdset
  1753. scan-build-6 otherwise warns, saying: warning: The left operand of '>='
  1754. is a garbage value otherwise, which is false.
  1755. Later scan-builds don't claim this on the same code.
  1756. Closes #7248
  1757. - asyn-ares: remove check for 'data' in Curl_resolver_cancel
  1758. It implied it would survive a NULL in there which it won't. Instead do
  1759. an assert.
  1760. Pointed out by scan-build.
  1761. Closes #7248
  1762. - url.c: remove two variable assigns that are never read
  1763. Pointed out by scan-build
  1764. Closes #7248
  1765. - [Gealber Morales brought this change]
  1766. mqtt: add support for username and password
  1767. Minor-edits-by: Daniel Stenberg
  1768. Added test 2200 to 2205
  1769. Closes #7243
  1770. - travis: remove the arm job
  1771. We do it on circle CI instead
  1772. - CI: add .circleci/config.yml
  1773. Assisted-by: Gabriel Simmer
  1774. Closes #7239
  1775. - RELEASE-NOTES: synced
  1776. - runtests: init $VERSION to avoid warnings when using -l
  1777. - openssl: don't remove session id entry in disassociate
  1778. When a connection is disassociated from a transfer, the Session ID entry
  1779. should remain.
  1780. Regression since 7f4a9a9 (shipped in libcurl 7.77.0)
  1781. Reported-by: Gergely Nagy
  1782. Reported-by: Paul Groke
  1783. Fixes #7222
  1784. Closes #7230
  1785. - single_transfer: ignore blank --output-dir
  1786. ... as otherwise it creates a rather unexpected target directory with a
  1787. leading slash.
  1788. Reported-by: Harry Sintonen
  1789. Fixes #7218
  1790. Closes #7233
  1791. - tests: update README about servers and port numbers
  1792. Closes #7242
  1793. - conn_shutdown: if closed during CONNECT cleanup properly
  1794. Reported-by: Alex Xu
  1795. Reported-by: Phil E. Taylor
  1796. Fixes #7236
  1797. Closes #7237
  1798. - [Christian Weisgerber brought this change]
  1799. sws: malloc request struct instead of using stack
  1800. ... 2MB requests is otherwise just too big for some systems.
  1801. (The allocations are not freed properly.)
  1802. Bug: https://curl.se/mail/lib-2021-06/0018.html
  1803. Closes #7235
  1804. - [Mark Swaanenburg brought this change]
  1805. lib: don't compare fd to FD_SETSIZE when using poll
  1806. FD_SETSIZE is irrelevant when using poll. So ensuring that the file
  1807. descriptor is smaller than FD_SETSIZE in VALID_SOCK, can cause
  1808. multi_wait to ignore perfectly valid file descriptors and simply wait
  1809. for 1s to avoid hammering the CPU in a busy loop.
  1810. Fixes #7240
  1811. Closes #7241
  1812. - [zhangxiuhua brought this change]
  1813. doh: fix wrong DEBUGASSERT for doh private_data
  1814. Closes #7227
  1815. - [yb999 brought this change]
  1816. tests: update README.md with a missing single quote
  1817. Closes #7231
  1818. - GHA: run all tests for hyper too
  1819. As it lists disabled ones in DISABLED now
  1820. Closes #7209
  1821. - tests/data/DISABLED: add tests not working with hyper
  1822. The goal is to remove them all from here over time.
  1823. Closes #7209
  1824. - runtests: also find the last test in Makefile.inc
  1825. Closes #7209
  1826. - test3010: work with hyper mode
  1827. Closes #7209
  1828. - configure: disable RTSP when hyper is selected
  1829. Makes test 1013 work
  1830. Closes #7209
  1831. - test1594/1595/1596: fix to work in hyper mode
  1832. Closes #7209
  1833. - test1438/1457: add HTTP keyword to make hyper mode work
  1834. Closes #7209
  1835. - test1340/1341: adjusted for hyper mode
  1836. Closes #7209
  1837. - test1218: adjusted for hyper mode
  1838. Closes #7209
  1839. - test1216: adjusted for hyper mode
  1840. Closes #7209
  1841. - test1230: adjust to work in hyper mode
  1842. Closes #7209
  1843. - c-hyper: abort CONNECT response reading early on non 2xx responses
  1844. Fixes test 493
  1845. Closes #7209
  1846. - test434: add HTTP keyword
  1847. Closes #7209
  1848. - test599: adjusted to work in hyper mode
  1849. Closes #7209
  1850. - c-hyper: fix the uploaded field in progress callbacks
  1851. Makes test 578 work
  1852. Closes #7209
  1853. - test566: adjust to work with hyper mode
  1854. Closes #7209
  1855. - [Fawad Mirza brought this change]
  1856. CURLOPT_WRITEFUNCTION.3: minor update of the example
  1857. Safely avoid chunk.size garbage value if declared non globally.
  1858. Closes #7219
  1859. - [Bastian Krause brought this change]
  1860. configure: rename get-easy-option configure option to get-easy-options
  1861. "get-easy-options" is the configure option advertised by the help text
  1862. anyway, so use that.
  1863. Fixes #7211
  1864. Closes #7213
  1865. Follow-up to ad691b191 ("configure: added --disable-get-easy-options")
  1866. Suggested-by: Daniel Stenberg <daniel@haxx.se>
  1867. Signed-off-by: Bastian Krause <bst@pengutronix.de>
  1868. - runtests: skip disabled tests unless -f is used
  1869. To make it easier to write ranges like '115 to 229' without that
  1870. explicitly enabling tests that are listed in DISABLED, this makes
  1871. runtests always skip disabled tests unless the -f command line option is
  1872. used.
  1873. Previously the code attempted to not run such tests, but didn't do it
  1874. correctly.
  1875. Closes #7212
  1876. - [Jun-ya Kato brought this change]
  1877. ngtcp2: disable TLSv1.3 compatible mode when using GnuTLS
  1878. The latest GnuTLS-3.7.2 implements disable switch for TLSv1.3 compatible
  1879. mode for middle box but it is enabled by default, which is unnecessary
  1880. for QUIC.
  1881. Fixes #6896
  1882. Closes #7202
  1883. - test644: remove as duplicate of test 587
  1884. Closes #7208
  1885. Daniel Gustafsson (8 Jun 2021)
  1886. - RELEASE-NOTES: synced
  1887. - cookies: track expiration in jar to optimize removals
  1888. Removing expired cookies needs to be a fast operation since we want to
  1889. be able to perform it often and speculatively. By tracking the timestamp
  1890. of the next known expiration we can exit early in case the timestamp is
  1891. in the future.
  1892. Closes: #7172
  1893. Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  1894. Daniel Stenberg (7 Jun 2021)
  1895. - GHA: add several libcurl tests to the hyper job
  1896. 500 to 512
  1897. - test500: adjust to work with hyper mode
  1898. - c-hyper: support CURLINFO_STARTTRANSFER_TIME
  1899. Closes #7204
  1900. - c-hyper: support CURLOPT_HEADER
  1901. When enabled, the headers are passed to the body write callback as well.
  1902. Like in test 500
  1903. Closes #7204
  1904. - GHA: run the newly fixed tests with hyper
  1905. Closes #7205
  1906. - test433: adjust for hyper mode
  1907. Closes #7205
  1908. - test395: hyper cannot work around > 64 bit content-lengths like built-in
  1909. Closes #7205
  1910. - test394: hyper returns a different error
  1911. Closes #7205
  1912. - test393: make Content-Length fit within 64 bit for hyper
  1913. Closes #7205
  1914. - test347: CRLFify to work in hyper mode
  1915. Closes #7205
  1916. - test339: CRLFify better to work in hyper mode
  1917. Closes #7205
  1918. - travis: remove the hyper build
  1919. - GHA: add a linux-hyper job
  1920. Closes #7206
  1921. - test328: avoid a header-looking body to make hyper mode work
  1922. The test still works the same, just modified two bytes in the content.
  1923. Closes #7203
  1924. - release-notes.pl: also spot common 'closes' typo
  1925. - metalink: remove
  1926. Warning: this will make existing curl command lines that use metalink to
  1927. stop working.
  1928. Reasons for removal:
  1929. 1. We've found several security problems and issues involving the
  1930. metalink support in curl. The issues are not detailed here. When
  1931. working on those, it become apparent to the team that several of the
  1932. problems are due to the system design, metalink library API and what
  1933. the metalink RFC says. They are very hard to fix on the curl side
  1934. only.
  1935. 2. The metalink usage with curl was only very briefly documented and was
  1936. not following the "normal" curl usage pattern in several ways, making
  1937. it surprising and non-intuitive which could lead to further security
  1938. issues.
  1939. 3. The metalink library was last updated 6 years ago and wasn't so
  1940. active the years before that either. An unmaintained library means
  1941. there's a security problem waiting to happen. This is probably reason
  1942. enough.
  1943. 4. Metalink requires an XML parsing library, which is complex code (even
  1944. the smaller alternatives) and to this day often gets security
  1945. updates.
  1946. 5. Metalink is not a widely used curl feature. In the 2020 curl user
  1947. survey, only 1.4% of the responders said that they'd are using it. In
  1948. 2021 that number was 1.2%. Searching the web also show very few
  1949. traces of it being used, even with other tools.
  1950. 6. The torrent format and associated technology clearly won for
  1951. downloading large files from multiple sources in parallel.
  1952. Cloes #7176
  1953. - docs/INSTALL: remove mentions of configure --with-darwin-ssl
  1954. ... as it isn't supported since a while back.
  1955. Make configure fail with a warning if used.
  1956. Reported-by: Vadim Grinshpun
  1957. Bug: https://curl.se/mail/lib-2021-06/0008.html
  1958. Closes #7200
  1959. - RELEASE-NOTES: synced
  1960. - [Gregor Jasny brought this change]
  1961. cmake: Avoid leaking absolute paths into exported config
  1962. The `find_libarary` command resolves the library or framework
  1963. into an absolute path. In case of system frameworks which are
  1964. located within an Xcode-provided SDK this results in the Xcode
  1965. path and SDK version being part of the library path.
  1966. Because those library paths end up in the exported CMake config
  1967. importing curl will fail once the Xcode location or SDK version
  1968. changes:
  1969. ```cmake
  1970. set_target_properties(CURL::libcurl PROPERTIES
  1971. INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
  1972. INTERFACE_LINK_LIBRARIES "lber;ldap;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/SystemConfiguration.framework;OpenSSL::SSL;OpenSSL::Crypto;ZLIB::ZLIB"
  1973. )
  1974. ```
  1975. A work-around is to link against system-level frameworks with
  1976. `-framework XYZ`. In case of `SystemConfiguration` we might be able
  1977. to omit the lookup-check because we could assume the framework is
  1978. always present.
  1979. Closes #7152
  1980. - [Shikha Sharma brought this change]
  1981. http2_connisdead: handle trailing GOAWAY better
  1982. When checking the connection the input processing returns error
  1983. immediately, we now consider that a dead connnection.
  1984. Bug: https://curl.se/mail/lib-2021-06/0001.html
  1985. Closes #7192
  1986. - [Dmitry Karpov brought this change]
  1987. ares: always store IPv6 addresses first
  1988. Trying dual-stack on some embedded platform, I noticed that quite
  1989. frequently (20%) libCurl starts from IPv4 regardless the Happy Eyeballs
  1990. timeout value. After debugging this issue, I noticed that this happens
  1991. if c-ares resolver response for IPv6 family comes before IPv4 (which was
  1992. randomly happening in my tests).
  1993. In such cases, because libCurl puts the last resolver response on top of
  1994. the address list, when IPv4 resolver response comes after IPv6 one - the
  1995. IPv4 family starts the connection phase instead of IPv6 family.
  1996. The solution for this issue is to always put IPv6 addresses on top of
  1997. the address list, regardless the order of resolver responses.
  1998. Bug: https://curl.se/mail/lib-2021-06/0003.html
  1999. Closes #7188
  2000. - Revert "Revert "socketpair: fix potential hangs""
  2001. This reverts commit 3e70c3430a370a31eff2c1d8fea29edaca8f1127.
  2002. Thus brings back the change from #7144 as was originally landed in
  2003. c769d1eab4de8b
  2004. Closes #7144 (again)
  2005. - [Ebe Janchivdorj brought this change]
  2006. schannel: move code out of SChannel_connect_step1
  2007. Reviewed-by: Marc Hoersken
  2008. Closes #7168
  2009. - tests/data/Makefile.inc: error: trailing backslash on last line
  2010. Follow-up to d8dcb399b8009d
  2011. - TODO: Support rate-limiting for MQTT
  2012. - [Dmitry Kostjuchenko brought this change]
  2013. warnless: simplify type size handling
  2014. By using sizeof(T), existing defines and relying on the compiler to
  2015. define the required signed/unsigned mask.
  2016. Closes #7181
  2017. Gisle Vanem (4 Jun 2021)
  2018. - [Win32] Fix for USE_WATT32
  2019. My Watt-32 tcp/ip stack works on Windows but it does not have `WSAIoctl()`
  2020. Daniel Stenberg (4 Jun 2021)
  2021. - [Alexis Vachette brought this change]
  2022. url: bad CURLOPT_CONNECT_TO syntax now returns error
  2023. Added test 3020 to verify
  2024. Closes #7183
  2025. - github: remove the cmake macOS gcc-8 jobs
  2026. They're too similar to the gcc-9 ones to be useful (and seems to not
  2027. work anymore).
  2028. Closes #7187
  2029. - test269: disable for hyper
  2030. --ignore-content-length / CURLOPT_IGNORE_CONTENT_LENGTH doesn't work
  2031. with hyper.
  2032. Closes #7184
  2033. - runtests: enable 'hyper mode' only for HTTP tests
  2034. The 'hyper mode' makes line-ending checks work in the test suite for
  2035. when hyper is used. Now it also requires that HTTP or HTTPS are
  2036. mentioned as keywords to be enabled so that it doesn't wrongly adjusts
  2037. tests for other protocols.
  2038. This makes test 271 (TFTP) work again in hyper enabled builds.
  2039. Closes #7185
  2040. - [Alexis Vachette brought this change]
  2041. hostip: bad CURLOPT_RESOLVE syntax now returns error
  2042. Added test 3019
  2043. Fixes #7170
  2044. Closes #7174
  2045. Daniel Gustafsson (3 Jun 2021)
  2046. - cookies: fix typo and expand comment
  2047. Fix a typo in the sorting comment, and while in there elaborate slightly
  2048. on why creationtime can be used as a tiebreaker.
  2049. - cookies: remove unused header
  2050. Commit 1c1d9f1affbd3367bcb24062e261d0ea5d185e3a removed the last use
  2051. for the inet_pton.h headerfile, this removes the inclusion of the
  2052. header.
  2053. Closes: #7182
  2054. Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  2055. Daniel Stenberg (3 Jun 2021)
  2056. - Revert "socketpair: fix potential hangs"
  2057. This reverts commit c769d1eab4de8b9f1bd84d992c63692fdc43c5be.
  2058. See #7144 for details
  2059. - [Paul Groke brought this change]
  2060. socketpair: fix potential hangs
  2061. Fixes potential hang in accept by using select + non-blocking accept.
  2062. Fixes potential hang in peer check by replacing the send/recv check with
  2063. a getsockname/getpeername check.
  2064. Adds length check for returned sockaddr data.
  2065. Closes #7144
  2066. - runtests: parse data/Makefile.inc instead of using make
  2067. The warning about missing entries in that file then doesn't require that
  2068. the Makefile has been regenerated which was confusing.
  2069. The scan for the test num is a little more error prone than before
  2070. (since now it doesn't actually verify that it is legitimate Makefile
  2071. syntax), but I think it is good enough.
  2072. Closes #7177
  2073. - [Harry Sintonen brought this change]
  2074. filecheck: quietly remove test-place/*~
  2075. Closes #7179
  2076. - CURLE_SETOPT_OPTION_SYNTAX: new error name for wrong setopt syntax
  2077. For options that pass in lists or strings that are subsequently parsed
  2078. and must be correct. This broadens the scope for the option previously
  2079. known as CURLE_TELNET_OPTION_SYNTAX but the old name is of course still
  2080. provided as a #define for existing applications.
  2081. Closes #7175
  2082. - tests: fix Accept-Encoding strips to work with Hyper builds
  2083. The previous strip also removed the CR which turned problematic.
  2084. valgrind.supp: add zstd suppression using hyper
  2085. Reported-and-analyzed-by: Kevin Burke
  2086. Fixes #7169
  2087. Closes #7171
  2088. - github: timeout jobs on macOS after 90 minutes
  2089. Assisted-by: Marc Hoersken
  2090. Closes #7173
  2091. - [Harry Sintonen brought this change]
  2092. mqtt: detect illegal and too large file size
  2093. Add test 3017 and 3018 to verify.
  2094. Closes #7166
  2095. - [theawless brought this change]
  2096. cmake: add CURL_DISABLE_NTLM option
  2097. Closes #7028
  2098. - [theawless brought this change]
  2099. configure: add --disable-ntlm option
  2100. Closes #7028
  2101. - [theawless brought this change]
  2102. define: re-add CURL_DISABLE_NTLM and corresponding ifdefs
  2103. This flag will be further exposed by adding build options.
  2104. Reverts #6809
  2105. Closes #7028
  2106. - RELEASE-NOTES: synced
  2107. Viktor Szakats (1 Jun 2021)
  2108. - travis: delete --enable-hsts option (it is the default now) [ci skip]
  2109. Reviewed-by: Daniel Stenberg
  2110. Closes #7167
  2111. Daniel Stenberg (1 Jun 2021)
  2112. - hostip: fix 3 coverity complaints
  2113. Follow-up to 1a0ebf6632f889eed
  2114. - Check the return code to Curl_inet_pton() in two instances, even
  2115. though we know the input is valid so the functions won't fail.
  2116. - Clear the 'struct sockaddr_in' struct before use so that the
  2117. 'sin_zero' field isn't left uninitialized.
  2118. Detected by Coverity.
  2119. Assisted-by: Harry Sintonen
  2120. Closes #7163
  2121. - c-hyper: fix NTLM on closed connection tested with test159
  2122. Closes #7154
  2123. - conncache: lowercase the hash key for better match
  2124. As host names are case insensitive, the use of case sensitive hashing
  2125. caused unnecesary cache misses and therefore lost performance. This
  2126. lowercases the hash key.
  2127. Reported-by: Harry Sintonen
  2128. Fixes #7159
  2129. Closes #7161
  2130. - mbedtls: make mbedtls_strerror always work
  2131. If the function doesn't exist, provide a macro that just clears the
  2132. error message. Removes #ifdef uses from the code.
  2133. Closes #7162
  2134. - vtls: exit addsessionid if no cache is inited
  2135. Follow-up to b249592d29ae0
  2136. Avoids NULL pointer derefs.
  2137. Closes #7165
  2138. - [Harry Sintonen brought this change]
  2139. Curl_ntlm_core_mk_nt_hash: fix OOM in error path
  2140. Closes #7164
  2141. Michael Kaufmann (1 Jun 2021)
  2142. - ssl: read pending close notify alert before closing the connection
  2143. This avoids a TCP reset (RST) if the server initiates a connection
  2144. shutdown by sending an SSL close notify alert and then closes the TCP
  2145. connection.
  2146. For SSL connections, usually the server announces that it will close the
  2147. connection with an SSL close notify alert. curl should read this alert.
  2148. If curl does not read this alert and just closes the connection, some
  2149. operating systems close the TCP connection with an RST flag.
  2150. See RFC 1122, section 4.2.2.13
  2151. If curl reads the close notify alert, the TCP connection is closed
  2152. normally with a FIN flag.
  2153. The new code is similar to existing code in the "SSL shutdown" function:
  2154. try to read an alert (non-blocking), and ignore any read errors.
  2155. Closes #7095
  2156. Daniel Stenberg (1 Jun 2021)
  2157. - [Laurent Dufresne brought this change]
  2158. setopt: fix incorrect comments
  2159. Closes #7157
  2160. - [Laurent Dufresne brought this change]
  2161. mbedtls: add support for cert and key blob options
  2162. CURLOPT_SSLCERT_BLOB and CURLOPT_SSLKEY_BLOB weren't usable with
  2163. mbedtls backend, so the support was added.
  2164. Closes #7157
  2165. - [Gregor Jasny brought this change]
  2166. cmake: try well-known send/recv signature for Apple
  2167. The CMake `try_compile` command is especially slow for
  2168. the Xcode generator. With this patch applied it first tests
  2169. for the currently used (and Open Group specified) send/recv
  2170. signature. In case this fails testing falls-back to the
  2171. permutations.
  2172. speed-up:
  2173. ```
  2174. time cmake .. -GNinja -DCMAKE_USE_SECTRANSP=ON -DHTTP_ONLY=ON -DCMAKE_USE_LIBSSH2=OFF
  2175. before: 11.64s user 11.09s system 55% cpu 40.754 total
  2176. after: 7.84s user 6.57s system 51% cpu 28.074 total
  2177. ```
  2178. ```
  2179. time cmake .. -GXcode -DCMAKE_USE_SECTRANSP=ON -DHTTP_ONLY=ON -DCMAKE_USE_LIBSSH2=OFF
  2180. before: 217.07s user 104.15s system 60% cpu 8:51.79 total
  2181. after: 108.76s user 51.80s system 58% cpu 4:32.58 total
  2182. ```
  2183. Closes #7158
  2184. - http2: init recvbuf struct for pushed streams
  2185. Debug builds would warn that these structs were not initialized properly
  2186. for pushed streams.
  2187. Ref: #7148
  2188. Closes #7153
  2189. - Curl_ssl_getsessionid: fail if no session cache exists
  2190. This function might get called for an easy handle for which the session
  2191. cache hasn't been setup. It now just returns a "miss" in that case.
  2192. Reported-by: Christoph M. Becker
  2193. Fixes #7148
  2194. Closes #7153
  2195. - GOVERNANCE: add 'user', 'committer' and 'contributor'
  2196. As those are commonly used terms in the project.
  2197. Closes #7151
  2198. - URL-SYNTAX.md: document the new 'localhost' treatment
  2199. - hostip: make 'localhost' return fixed values
  2200. Resolving the case insensitive host name 'localhost' now returns the
  2201. addresses 127.0.0.1 and (if IPv6 is enabled) ::1 without using any
  2202. resolver.
  2203. This removes the risk that users accidentally resolves 'localhost' to
  2204. something else. By making sure 'localhost' is always local, we can
  2205. assume a "secure context" for such transfers (for cookies etc).
  2206. Closes #7039
  2207. Daniel Gustafsson (31 May 2021)
  2208. - docs: fix typos
  2209. Daniel Stenberg (30 May 2021)
  2210. - hsts: ignore numberical IP address hosts
  2211. Also, use a single function library-wide for detecting if a given hostname is
  2212. a numerical IP address.
  2213. Reported-by: Harry Sintonen
  2214. Fixes #7146
  2215. Closes #7149
  2216. - test178: adjust for hyper
  2217. Hyper returns the same error for wrong HTTP version as for negative
  2218. content-length. Test 178 verifies that negative content-length is
  2219. rejected but the hyper backend will return a different error for it (and
  2220. without any helpful message telling why the message was bad). It will
  2221. also not return any headers at all for the response, not even the ones
  2222. that arrived before the error.
  2223. Closes #7147
  2224. - HYPER: remove mentions of deprecated development branch
  2225. - c-hyper: handle NULL from hyper_buf_copy()
  2226. Closes #7143
  2227. - HSTS: not experimental anymore
  2228. - [Douglas R. Reno brought this change]
  2229. INSTALL: use correct extension for CURL-DISABLE.md
  2230. In INSTALL.MD, it's currently set to CURL-DISABLE-md instead of
  2231. CURL-DISABLE.md. This generates a 404 on the cURL website as well as
  2232. when viewing the docs through Github.
  2233. Closes #7142
  2234. - travis: run tests 1 - 153 with hyper
  2235. - c-hyper: convert HYPERE_INVALID_PEER_MESSAGE to CURLE_UNSUPPORTED_PROTOCOL
  2236. Makes test 129 work (HTTP/1.2 response).
  2237. Closes #7141
  2238. - http_proxy: deal with non-200 CONNECT response with Hyper
  2239. Makes test 94 and 95 work
  2240. Closes #7141
  2241. - c-hyper: clear NTLM auth buffer when request is issued
  2242. To prevent previous ones to get reused on subsequent requests. Matches
  2243. how the built-in HTTP code works. Makes test 90 to 93 work.
  2244. Add test 90 to 93 in travis.
  2245. Closes #7139
  2246. - [Joel Depooter brought this change]
  2247. schannel: set ALPN length correctly for HTTP/2
  2248. In a3268eca792f1 this code was changed to use the ALPN_H2 constant
  2249. instead of the NGHTTP2_PROTO_ALPN constant. However, these constants are
  2250. not the same. The nghttp2 constant included the length of the string,
  2251. like this: "\x2h2". The ALPN_H2 constant is just "h2". Therefore we need
  2252. to re-add the length of the string to the ALPN buffer.
  2253. Closes #7138
  2254. - travis: run tests 1-89 in the hyper build
  2255. Closes #7137
  2256. - Revert "c-hyper: handle body on HYPER_TASK_EMPTY"
  2257. This reverts commit c3eefa95c31f55657f0af422e8268d738f689066.
  2258. Reported-by: Kevin Burke
  2259. Fixes #7122
  2260. Closes #7136
  2261. - [Jon Rumsey brought this change]
  2262. ccsidcurl: fix the compile errors
  2263. Looks like the declaration of cpp shoule be const char ** and return
  2264. null if convert_version_info_string fails.
  2265. Fixes #7134
  2266. Closes #7135
  2267. - [Viktor Szakats brought this change]
  2268. docs: use --max-redirs instead of --max-redir
  2269. For consistency.
  2270. Closes #7130
  2271. - RELEASE-NOTES: synced
  2272. ... and bump to 7.77.1
  2273. - [Michael Forney brought this change]
  2274. travis: add bearssl build
  2275. Closes #7133
  2276. - [Michael Forney brought this change]
  2277. bearssl: explicitly initialize all fields of Curl_ssl
  2278. Also, add comments like the other vtls backends.
  2279. Closes #7133
  2280. - [Michael Forney brought this change]
  2281. bearssl: remove incorrect const on variable that is modified
  2282. hostname may be set to NULL later on in this function if it is an
  2283. IP address.
  2284. Closes #7133
  2285. Version 7.77.0 (26 May 2021)
  2286. Daniel Stenberg (26 May 2021)
  2287. - RELEASE-NOTES: synced
  2288. - THANKS: added contributors from 7.77.0 cycle
  2289. - copyright: update copyright year ranges to 2021
  2290. - [Radek Zajic brought this change]
  2291. hostip: fix broken macOS/CMake/GCC builds
  2292. Follow-up to 31f631a142d855f06
  2293. Fixes #7128
  2294. Closes #7129
  2295. - TODO: netrc caching and sharing
  2296. URL: https://curl.se/mail/archive-2021-05/0018.html
  2297. - [Orgad Shaneh brought this change]
  2298. setopt: streamline ssl option code
  2299. Make it use the same style as the code next to it
  2300. Closes #7123
  2301. - [Radek Zajic brought this change]
  2302. lib/hostip6.c: make NAT64 address synthesis on macOS work
  2303. Closes #7121
  2304. - [ejanchivdorj brought this change]
  2305. sectransp: fix EXC_BAD_ACCESS caused by uninitialized buffer
  2306. When the SecCertificateCopyCommonName function fails, it leaves
  2307. common_name in a invalid state so CFStringCompare uses the invalid
  2308. result, causing EXC_BAD_ACCESS.
  2309. The fix is to check the return value of the function before using the
  2310. name.
  2311. Closes #7126
  2312. - [Paweł Wegner brought this change]
  2313. CMake: add CURL_ENABLE_EXPORT_TARGET option
  2314. install(EXPORT ...) causes trouble when embedding curl dependencies
  2315. which don't provide install(EXPORT ...) targets (e.g libressl and
  2316. nghttp2) with cmake's add_subdirectory.
  2317. Reviewed-by: Jakub Zakrzewski
  2318. Closes #7060
  2319. - [Alessandro Ghedini brought this change]
  2320. quiche: update for network path aware API
  2321. Latest version of quiche requires the application to pass the peer
  2322. address of received packets, and it provides the address for outgoing
  2323. packets back.
  2324. Closes #7120
  2325. - [Jacob Hoffman-Andrews brought this change]
  2326. rustls: switch read_tls and write_tls to callbacks
  2327. And update to 0.6.0, including a rename from session to connection for
  2328. many fields.
  2329. Closes #7071
  2330. - [Koichi Shiraishi brought this change]
  2331. sectransp: fix 7f4a9a9b2a49 commit about missing comma
  2332. Follow-up to 7f4a9a9b2a495
  2333. Closes #7119
  2334. - [Harry Sintonen brought this change]
  2335. openssl: associate/detach the transfer from connection
  2336. CVE-2021-22901
  2337. Bug: https://curl.se/docs/CVE-2021-22901.html
  2338. - [Harry Sintonen brought this change]
  2339. telnet: check sscanf() for correct number of matches
  2340. CVE-2021-22898
  2341. Bug: https://curl.se/docs/CVE-2021-22898.html
  2342. - schannel: don't use static to store selected ciphers
  2343. CVE-2021-22897
  2344. Bug: https://curl.se/docs/CVE-2021-22897.html
  2345. - docs/tests: remove freenode references
  2346. - RELEASE-NOTES: synced
  2347. - [Sergey Markelov brought this change]
  2348. NSS: make colons, commas and spaces valid separators in cipher list
  2349. Fixes #7110
  2350. Closes #7115
  2351. - curl: include libmetalink version in --version output
  2352. Closes #7112
  2353. Jay Satiro (21 May 2021)
  2354. - [Matias N. Goldberg brought this change]
  2355. cmake: Use multithreaded compilation on VS 2008+
  2356. Multithreaded compilation has been supported since at least VS 2005 and
  2357. been robustly stable since at least VS 2008
  2358. Closes https://github.com/curl/curl/pull/7109
  2359. Daniel Stenberg (21 May 2021)
  2360. - [Matias N. Goldberg brought this change]
  2361. cmake: fix two invokes result in different curl_config.h
  2362. Fixes #7100
  2363. Closes #7101
  2364. Reviewed-by: Jakub Zakrzewski
  2365. Signed-off-by: Matias N. Goldberg <dark_sylinc@yahoo.com.ar>
  2366. - [Peng-Yu Chen brought this change]
  2367. cmake: detect CURL_SA_FAMILY_T
  2368. Fixes #7049
  2369. Closes #7065
  2370. - [Lucas Clemente Vella brought this change]
  2371. CURLOPT_IPRESOLVE: preventing wrong IP version from being used
  2372. In some situations, it was possible that a transfer was setup to
  2373. use an specific IP version, but due do DNS caching or connection
  2374. reuse, it ended up using a different IP version from requested.
  2375. This commit changes the effect of CURLOPT_IPRESOLVE from simply
  2376. restricting address resolution to preventing the wrong connection
  2377. type being used, when choosing a connection from the pool, and
  2378. to restricting what addresses could be used when establishing
  2379. a new connection.
  2380. It is important that all addresses versions are resolved, even if
  2381. not used in that transfer in particular, because the result is
  2382. cached, and could be useful for a different transfer with a
  2383. different CURLOPT_IPRESOLVE setting.
  2384. Closes #6853
  2385. - [Oliver Urbann brought this change]
  2386. AmigaOS: add functions definitions for SHA256
  2387. AmiSSL replaces many functions with macros. Curl requires pointer
  2388. to some of these functions. Thus, we have to encapsulate these macros:
  2389. SHA256_Init, SHA256_Update, SHA256_Final, X509_INFO_free.
  2390. Bug: https://github.com/jens-maus/amissl/issues/15
  2391. Co-authored-by: Daniel Stenberg <daniel@haxx.se>
  2392. Closes #7099
  2393. - test2100: make it run with and require IPv6
  2394. Closes #7083
  2395. - tests/getpart: generate output URL encoded for better diffs
  2396. Closes #7083
  2397. - [Ryan Beck-Buysse brought this change]
  2398. docs/TheArtOfHttpScripting: fix markdown links
  2399. extra parens cause the links to be incorrectly formatted
  2400. and inconsistent with the rest of the document.
  2401. Signed-off-by: Ryan Beck-Buysse <rbuysse@gmail.com>
  2402. Closes #7097
  2403. - RELEASE-NOTES: synced
  2404. - [Emil Engler brought this change]
  2405. docs: replace dots with dashes in markdown enums
  2406. We use dashes instead of dots nearly everywhere except for those few
  2407. cases. This commit addresses this issues and brings more coherency into
  2408. it.
  2409. Closes #7093
  2410. - [Emil Engler brought this change]
  2411. docs: improve INTERNALS.md regarding getsock cb
  2412. This adds the I/O prefix to indicate that those "actions" are kind-of
  2413. related to those found in select(2) or poll(2) (reading/writing).
  2414. It also adds a note where the prototypes of those functions can be found
  2415. in the source code.
  2416. Closes #7092
  2417. - [Emil Engler brought this change]
  2418. docs: document attach in INTERNALS.md
  2419. The new field in the Curl_handler struct still lacks documentation. This
  2420. adds it it from the information extracted from lib/urldata.h:797
  2421. Closes #7091
  2422. - [Marc Aldorasi brought this change]
  2423. config: remove now-unused macros
  2424. Closes #7094
  2425. - [Marc Aldorasi brought this change]
  2426. hostip.h: remove declaration of unimplemented function
  2427. Closes #7094
  2428. - h3: add 'attach' callback to protocol handlers
  2429. Follow-up to 0c55fbab45be
  2430. Reviewed-by: Emil Engler
  2431. Closes #7090
  2432. - wolfssl: remove SSLv3 support leftovers
  2433. Closes #7088
  2434. - curl-wolfssl.m4: without custom include path, assume /usr/include
  2435. ... so that we can point out the root of the OpenSSL emulation headers.
  2436. Previously this used the '$includedir' variable which is wrong since
  2437. that defaults to the dir where the current configure invoke will install
  2438. the built libcurl headers: /usr/local by default.
  2439. Fixes #7085
  2440. Reported-by: Joel Jakobsson
  2441. Closes #7087
  2442. - [Joel Depooter brought this change]
  2443. data_pending: check only SECONDARY socket for FTP(S) transfers
  2444. Check the FIRST for all other protocols.
  2445. This fixes a timeout in an ftps download. The server sends a TLS
  2446. close_notify message in the same packet as the file data. The
  2447. close_notify seems to not be handled in the schannel_recv function, so
  2448. libcurl is not aware that the server has closed the connection. Thus
  2449. libcurl ends up waiting for action on the socket until a timeout is
  2450. reached. With the secondary socket check added to the data_pending
  2451. function, the close_notify is properly handled, and the ftps transfer
  2452. terminates as expected.
  2453. Fixes #7068
  2454. Closes #7069
  2455. - github: inhibit deprecated declarations for clang on macOS
  2456. ... as they otherwise cause ldap build errors in the CI.
  2457. Fixes #7081
  2458. Closes #7082
  2459. - conn: add 'attach' to protocol handler, make libssh2 use it
  2460. The libssh2 backend has SSH session associated with the connection but
  2461. the callback context is the easy handle, so when a connection gets
  2462. attached to a transfer, the protocol handler now allows for a custom
  2463. function to get used to set things up correctly.
  2464. Reported-by: Michael O'Farrell
  2465. Fixes #6898
  2466. Closes #7078
  2467. - http2: make sure pause is done on HTTP
  2468. Since the function is called for any protocol, we can't assume that the
  2469. HTTP struct is there without first making sure it is HTTP.
  2470. Reported-by: Denis Goleshchikhin
  2471. Fixes #7079
  2472. Closes #7080
  2473. - docs: cookies from HTTP headers need domain set
  2474. ... or the cookies won't get sent. Push users to using the "Netscape"
  2475. format instead, which curl uses when saving a cookie "jar".
  2476. Reported-by: Martin Dorey
  2477. Reviewed-by: Daniel Gustafsson
  2478. Fixes #6723
  2479. Closes #7077
  2480. - RELEASE-NOTES: synced
  2481. - github: add a workflow with libssh2 on macOS using cmake
  2482. Closes #7047
  2483. - sws: allow HTTP requests up to 2MB in size
  2484. To allow tests with slightly larger payloads. Like #7071 ...
  2485. Closes #7075
  2486. Marc Hoersken (16 May 2021)
  2487. - CI/azure: increase verbosity and fix outdated task names
  2488. Closes #7063
  2489. - CI/cirrus: add shared and static Windows release builds
  2490. Azure Pipelines is currently being used for debug builds,
  2491. let's also run some non-debug (release) Windows builds and
  2492. make use of previously underutilized Cirrus CI for that.
  2493. Reviewed-by: Marcel Raad
  2494. Closes #6991
  2495. Daniel Stenberg (16 May 2021)
  2496. - CURLOPT_CAPATH.3: defaults to a path, not NULL
  2497. Reported-by: Andrew Barnert
  2498. Closes #7062
  2499. - [Jacob Hoffman-Andrews brought this change]
  2500. c-hyper: handle body on HYPER_TASK_EMPTY
  2501. Some of the time, we get a HYPER_TASK_EMPTY response before the status
  2502. line, headers, and body have been read. Previously, that would cause us
  2503. to poll again, leading to a 1 second timeout.
  2504. The HYPER_TASK_EMPTY docs say:
  2505. The value of this task is null (does not imply an error).
  2506. So, if we receive a HYPER_TASK_EMPTY, continue on with processing the
  2507. response.
  2508. Reported-by: Kevin Burke
  2509. Fixes #7064
  2510. Closes #7070
  2511. - [Ikko Ashimine brought this change]
  2512. tool_getparam: fix comment typo in tool_getparam.c
  2513. enfore -> enforce
  2514. Closes #7074
  2515. - mem-include-scan.pl: require a non-word letter before memory funcs
  2516. ... so that ldap_memfree() for example doesn't match the scan for free.
  2517. Closes #7061
  2518. - version: free the openldap info correctly
  2519. ... to avoid memory leaks.
  2520. Follow-up to: bf0feae7768d9
  2521. Closes #7061
  2522. - dupset: remove totally off comment
  2523. Closes #7067
  2524. - configure: if asked for, fail if ldap is not found
  2525. Reported-by: Jakub Zakrzewski
  2526. Fixes #7053
  2527. Closes #7055
  2528. - version: add OpenLDAP version in the output
  2529. Assisted-by: Howard Chu
  2530. Closes #7054
  2531. Jay Satiro (13 May 2021)
  2532. - [Joel Depooter brought this change]
  2533. schannel: Ensure the security context request flags are always set
  2534. As of commit 54e7475, these flags would only be set when using a new
  2535. credential handle. When re-using an existing credential handle, the
  2536. flags would not be set.
  2537. Closes https://github.com/curl/curl/pull/7051
  2538. Dan Fandrich (12 May 2021)
  2539. - tests: Fix some tag matching issues in a number of tests
  2540. Daniel Stenberg (12 May 2021)
  2541. - sasl: use 'unsigned short' to store mechanism
  2542. ... saves a few bytes of struct size in memory and it only uses
  2543. 10 bits anyway.
  2544. Closes #7045
  2545. - hostip: remove the debug code for LocalHost
  2546. The Curl_resolv() had special code (when built in debug mode) for when
  2547. resolving the host name "LocalHost" (using that exact casing). It would
  2548. then get the host name from the --interface option instead.
  2549. This development-only feature was not used by anything (anymore) and we
  2550. have the --resolve feature if we want to play similar tricks properly
  2551. going forward.
  2552. Closes #7044
  2553. - progress: reset limit_size variables at transfer start
  2554. Otherwise the old value would linger from a previous use and would mess
  2555. up the network speed cap logic.
  2556. Reported-by: Ymir1711 on github
  2557. Fixes #7042
  2558. Closes #7043
  2559. - RELEASE-NOTES: synced
  2560. - [Daniel Gustafsson brought this change]
  2561. cookies: use CURLcode for cookie_output reporting
  2562. Writing the cookie file has multiple error conditions, and was using an
  2563. int with magic numbers to report the different error (which in turn were
  2564. disregarded anyways). This moves reporting to use a CURLcode value.
  2565. Lightly-touched-by: Daniel Stenberg
  2566. Closes #7037
  2567. Closes #6749
  2568. - [Daniel Gustafsson brought this change]
  2569. cookies: make use of string duplication function
  2570. strstore() is defined as a strdup which ensures to free the target
  2571. pointer before duping the source char * into it. Make use of it in
  2572. two more cases where it can simplify the code.
  2573. - [Daniel Gustafsson brought this change]
  2574. cookies: refactor comments
  2575. Comments in the cookie code were a bit all over the place in terms of
  2576. style and wording. This takes a stab at cleaning them up by keeping to
  2577. a single style and overall shape. Some comments are moved a little and
  2578. some removed alltogether due to being redundant. No functional changes
  2579. have been made,
  2580. - [Peng-Yu Chen brought this change]
  2581. http2: skip immediate parsing of payload following protocol switch
  2582. This is considered not harmful as a following http2_recv shall be
  2583. called very soon.
  2584. This is considered helpful in the specific situation where some
  2585. servers (e.g. nghttpx v1.43.0) may fulfill stream 1 immediately
  2586. following the return of HTTP status 101, other than waiting for
  2587. the client-side connection preface to arrive.
  2588. Fixes #7036
  2589. Closes #7040
  2590. - [Peng-Yu Chen brought this change]
  2591. http2: use nghttp2_session_upgrade2 instead of nghttp2_session_upgrade
  2592. Following the upstream deprecation of nghttp2_session_upgrade.
  2593. Also provides further checks for requests with the HEAD method.
  2594. Closes #7041
  2595. - progress/trspeed: use a local convenient pointer to beautify code
  2596. The function becomes easier to read and understand with less repetition.
  2597. - trspeed: use long double for transfer speed calculation
  2598. - progress: move transfer speed calc into function
  2599. This silences two scan-build-11 warnings: "The result of the '/'
  2600. expression is undefined"
  2601. Bug: https://curl.se/mail/lib-2021-05/0022.html
  2602. Closes #7035
  2603. - [Cameron Cawley brought this change]
  2604. openssl: remove unneeded cast for CertOpenSystemStore()
  2605. Closes #7025
  2606. - travis: disable the libssh build
  2607. It can't run on focal and causes warnings on bionic. Since the focal
  2608. failure started rather suddenly a while ago, we can suspect it might be
  2609. temporary.
  2610. Added "bring back the build" to the TODO document.
  2611. Fixes #7011
  2612. Closes #7012
  2613. - [Peng-Yu Chen brought this change]
  2614. http: use calculated offsets inst of integer literals for header parsing
  2615. Assumed to be a minor coding style improvement with no behavior change.
  2616. A modern compiler is expected to have the calculation optimized during
  2617. compilation. It may be deemed okay even if that's not the case, since
  2618. the added overhead is considered very low.
  2619. Closes #7032
  2620. - [Peng-Yu Chen brought this change]
  2621. GIT-INFO: suggest using autoreconf instead of buildconf
  2622. Follow-up to 85868537d
  2623. Closes #7033
  2624. - http: deal with partial CONNECT sends
  2625. Also added 'CURL_SMALLSENDS' to make Curl_write() send short packets,
  2626. which helped verifying this even more.
  2627. Add test 363 to verify.
  2628. Reported-by: ustcqidi on github
  2629. Fixes #6950
  2630. Closes #7024
  2631. - HTTP3: make the ngtcp2 build use the quictls fork
  2632. ... as ngtcp2 itself documents the build this way.
  2633. Closes #7031
  2634. - http: limit the initial send amount to used upload buffer size
  2635. Previously this logic would cap the send to CURL_MAX_WRITE_SIZE bytes,
  2636. but for the situations where a larger upload buffer has been set, this
  2637. function can benefit from sending more bytes. With default size used,
  2638. this does the same as before.
  2639. Also changed the storage of the size to an 'unsigned int' as it is not
  2640. allowed to be set larger than 2M.
  2641. Also added cautions to the man pages about changing buffer sizes in
  2642. run-time.
  2643. Closes #7022
  2644. - RELEASE-NOTES: synced
  2645. - ngtcp2: fix the cb_acked_stream_data_offset proto
  2646. The 'datalen' value should be 64 bit, not size_t!
  2647. Reported-by: Dmitry Karpov
  2648. Bug: https://curl.se/mail/lib-2021-05/0019.html
  2649. Closes #7027
  2650. - progress: when possible, calculate transfer speeds with microseconds
  2651. ... this improves precision, especially for transfers in the few or even
  2652. sub millisecond range.
  2653. Reported-by: J. Bromley
  2654. Fixes #7017
  2655. Closes #7020
  2656. - http: reset the header buffer when sending the request
  2657. A reused transfer handle could otherwise reuse the previous leftover
  2658. buffer and havoc would ensue.
  2659. Reported-by: sergio-nsk on github
  2660. Fixes #7018
  2661. Closes #7021
  2662. - curl_mprintf.3: add description
  2663. These functions have existed in the API since the dawn of time. It is
  2664. about time we describe how they work, even if we discourage users from
  2665. using them.
  2666. Closes #7010
  2667. - [Timothy Gu brought this change]
  2668. URL-SYNTAX: update IDNA section for WHATWG spec changes
  2669. WHATWG URL has dictated the use of Nontransitional Processing (IDNA
  2670. 2008) for several years now. Chrome (and derivatives) still use
  2671. Transitional Processing, but Firefox and Safari have both switched.
  2672. Also document the fact that winidn functions differently from libidn2
  2673. here.
  2674. Closes #7026
  2675. - [Calvin Buckley brought this change]
  2676. INSTALL: add IBM i specific quirks
  2677. Fixes #6830
  2678. Closes #7013
  2679. - libcurl.3: mention the URL API
  2680. To make it easier to find. Also a minor polish of libcurl-url.3
  2681. Closes #7009
  2682. - GnuTLS: don't allow TLS 1.3 for versions that don't support it
  2683. Follow-up to 781864bedbc5
  2684. ... as they don't understand it and will return error at us!
  2685. Closes #7014
  2686. Kamil Dudka (6 May 2021)
  2687. - tool_getparam: handle failure of curlx_convert_tchar_to_UTF8()
  2688. Reported by GCC analyzer:
  2689. Error: GCC_ANALYZER_WARNING (CWE-476):
  2690. src/tool_getparam.c: scope_hint: In function 'parse_args'
  2691. src/tool_getparam.c:2318:38: warning[-Wanalyzer-possible-null-dereference]: dereference of possibly-NULL 'orig_opt'
  2692. lib/curlx.h:56: included_from: Included from here.
  2693. src/tool_getparam.c:28: included_from: Included from here.
  2694. lib/curl_multibyte.h:70:51: note: in definition of macro 'curlx_convert_tchar_to_UTF8'
  2695. src/tool_getparam.c:2316:16: note: in expansion of macro 'curlx_convert_tchar_to_UTF8'
  2696. Reviewed-by: Marcel Raad
  2697. Reviewed-by: Daniel Stenberg
  2698. Closes #7023
  2699. Daniel Stenberg (6 May 2021)
  2700. - scripts/delta: also show total number of days
  2701. Marc Hoersken (5 May 2021)
  2702. - sockfilt: fix invalid increment of handles index variable nfd
  2703. Only increment the array index if we actually stored a handle.
  2704. Follow up to e917492048f4b85a0fd58a033d10072fc7666c3b
  2705. Closes #6992
  2706. - sockfilt: avoid getting stuck waiting for writable socket
  2707. Reset FD_WRITE event using the same approach as in multi.c
  2708. Follow up to b36442b24305f3cda7c13cc64b46838995a4985b
  2709. Closes #6992
  2710. Jay Satiro (5 May 2021)
  2711. - test678: Fix for Windows multibyte builds
  2712. Follow-up to 77fc385 from yesterday.
  2713. Bug: https://github.com/curl/curl/pull/6662#issuecomment-832966557
  2714. Reported-by: Marc Hörsken
  2715. - [Dmitry Kostjuchenko brought this change]
  2716. build: fix compilation for Windows UWP platform
  2717. - Include afunix.h which is necessary for sockaddr_un when
  2718. USE_UNIX_SOCKETS is defined on Windows.
  2719. Closes https://github.com/curl/curl/pull/7006
  2720. Daniel Stenberg (5 May 2021)
  2721. - gnutls: make setting only the MAX TLS allowed version work
  2722. Previously, settting only the max allowed TLS version, leaving the
  2723. minimum one at default, didn't actually set it and left it to default
  2724. (TLS 1.3) too!
  2725. As a bonus, this change also removes the dead code handling of SSLv3
  2726. since that version can't be set anymore (since eff614fb0242cb).
  2727. Reported-by: Daniel Carpenter
  2728. Fixes #6998
  2729. Closes #7000
  2730. - openldap: replace ldap_ prefix on private functions
  2731. Since openldap itself uses that prefix and with OpenĹDAP 2.5.4 (at
  2732. least) there's a symbol collision because of that.
  2733. The private functions now use the 'oldap_' prefix where it previously
  2734. used 'ldap_'.
  2735. Reported-by: 3eka on github
  2736. Fixes #7004
  2737. Closes #7005
  2738. Jay Satiro (5 May 2021)
  2739. - http2: fix potentially uninitialized variable
  2740. introduced several days ago in 3193170. caught by visual studio linker.
  2741. - [Gilles Vollant brought this change]
  2742. SSL: support in-memory CA certs for some backends
  2743. - New options CURLOPT_CAINFO_BLOB and CURLOPT_PROXY_CAINFO_BLOB to
  2744. specify in-memory PEM certificates for OpenSSL, Schannel (Windows)
  2745. and Secure Transport (Apple) SSL backends.
  2746. Prior to this change PEM certificates could only be imported from a file
  2747. and not from memory.
  2748. Co-authored-by: moparisthebest@users.noreply.github.com
  2749. Ref: https://github.com/curl/curl/pull/4679
  2750. Ref: https://github.com/curl/curl/pull/5677
  2751. Ref: https://github.com/curl/curl/pull/6109
  2752. Closes https://github.com/curl/curl/pull/6662
  2753. Daniel Stenberg (4 May 2021)
  2754. - [David Cook brought this change]
  2755. tests: ignore case of chunked hex numbers in tests
  2756. When hyper is used, it emits uppercase hexadecimal numbers for chunked
  2757. encoding lengths. Without hyper, lowercase hexadecimal numbers are used.
  2758. This change adds preprocessor statements to tests where this is an
  2759. issue, and adapts the fixtures to match.
  2760. Closes #6987
  2761. - cmake: check for getppid and utimes
  2762. ... as they're checked for in the configure script and are used by
  2763. source code.
  2764. Removed checks for perror, setvbuf and strlcat since those defines are
  2765. not checked for in source code.
  2766. Bonus: removed HAVE_STRLCPY from a few config-*.h files since that
  2767. symbol is not used in source code.
  2768. Closes #6997
  2769. - libtest: remove lib530.c
  2770. Follow up from e50a877df when test 530 was removed. Since then this
  2771. source file has not been used/needed.
  2772. Closes #6999
  2773. - FILEFORMAT: mention sectransp as a feature
  2774. Been supported since at least 40259ca65
  2775. Closes #7001
  2776. - RELEASE-NOTES: synced
  2777. - libssh2: ignore timeout during disconnect
  2778. ... to avoid memory leaks!
  2779. libssh2 is tricky as we have to deal with the non-blockiness even in
  2780. close and shutdown cases. In the cases when we shutdown after a timeout
  2781. already expired, it is crucial that curl doen't let the timeout abort
  2782. the shutdown process as that then leaks memory!
  2783. Reported-by: Benjamin Riefenstahl
  2784. Fixes #6990
  2785. - KNOWN_BUGS: add two HTTP/2 bugs
  2786. - KNOWN_BUGS: add three HTTP/3 issues
  2787. ... and moved the HTTP/2 issues to its own section
  2788. Closes #6606
  2789. Closes #6510
  2790. Closes #6494
  2791. - [ejanchivdorj brought this change]
  2792. CURLcode: add CURLE_SSL_CLIENTCERT
  2793. When a TLS server requests a client certificate during handshake and
  2794. none can be provided, libcurl now returns this new error code
  2795. CURLE_SSL_CLIENTCERT
  2796. Only supported by Secure Transport and OpenSSL for TLS 1.3 so far.
  2797. Closes #6721
  2798. - [Tobias Gabriel brought this change]
  2799. .github/FUNDING: add link to GitHub sponsors
  2800. Closes #6985
  2801. - [Harry Sintonen brought this change]
  2802. krb5/name_to_level: replace checkprefix with curl_strequal
  2803. Closes #6993
  2804. - [Harry Sintonen brought this change]
  2805. Curl_input_digest: require space after Digest
  2806. Closes #6993
  2807. - [Harry Sintonen brought this change]
  2808. Curl_http_header: check for colon when matching Persistent-Auth
  2809. Closes #6993
  2810. - [Harry Sintonen brought this change]
  2811. Curl_http_input_auth: require valid separator after negotiation type
  2812. Closes #6993
  2813. - http: fix the check for 'Authorization' with Bearer
  2814. The code would wrongly check for it using an additional colon.
  2815. Reported-by: Blake Burkhart
  2816. Closes #6988
  2817. - [Kamil Dudka brought this change]
  2818. http2: fix a resource leak in push_promise()
  2819. ... detected by Coverity:
  2820. Error: RESOURCE_LEAK (CWE-772):
  2821. lib/http2.c:532: alloc_fn: Storage is returned from allocation function "duphandle".
  2822. lib/http2.c:532: var_assign: Assigning: "newhandle" = storage returned from "duphandle(data)".
  2823. lib/http2.c:552: noescape: Resource "newhandle" is not freed or pointed-to in "set_transfer_url".
  2824. lib/http2.c:555: leaked_storage: Variable "newhandle" going out of scope leaks the storage it points to.
  2825. Closes #6986
  2826. - [Kamil Dudka brought this change]
  2827. http2: fix resource leaks in set_transfer_url()
  2828. ... detected by Coverity:
  2829. Error: RESOURCE_LEAK (CWE-772):
  2830. lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
  2831. lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
  2832. lib/http2.c:486: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.]
  2833. lib/http2.c:488: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
  2834. Error: RESOURCE_LEAK (CWE-772):
  2835. lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
  2836. lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
  2837. lib/http2.c:493: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.]
  2838. lib/http2.c:495: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
  2839. Error: RESOURCE_LEAK (CWE-772):
  2840. lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
  2841. lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
  2842. lib/http2.c:500: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.]
  2843. lib/http2.c:502: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
  2844. Error: RESOURCE_LEAK (CWE-772):
  2845. lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
  2846. lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
  2847. lib/http2.c:505: noescape: Resource "u" is not freed or pointed-to in "curl_url_get". [Note: The source code implementation of the function has been overridden by a builtin model.]
  2848. lib/http2.c:507: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
  2849. Closes #6986
  2850. - [Jacob Hoffman-Andrews brought this change]
  2851. rustls: use ALPN
  2852. Update required rustls to 0.5.0
  2853. Closes #6960
  2854. - [Michał Antoniak brought this change]
  2855. gskit: fix CURL_DISABLE_PROXY build
  2856. Removed localfd and remotefd from ssl_backend_data (ued only with proxy
  2857. connection). Function pipe_ssloverssl return always 0, when proxy is not
  2858. used.
  2859. Closes #6981
  2860. - [Michał Antoniak brought this change]
  2861. gskit: fix undefined reference to 'conn'
  2862. Closes #6980
  2863. - [Jacob Hoffman-Andrews brought this change]
  2864. tls: add USE_HTTP2 define
  2865. This abstracts across the two HTTP/2 backends: nghttp2 and Hyper.
  2866. Add our own define for the "h2" ALPN protocol, so TLS backends can use
  2867. it without depending on a specific HTTP backend.
  2868. Closes #6959
  2869. - [Jacob Hoffman-Andrews brought this change]
  2870. lib: fix 0-length Curl_client_write calls
  2871. Closes #6954
  2872. - [Jacob Hoffman-Andrews brought this change]
  2873. lib: remove strlen call from Curl_client_write
  2874. At all call sites with an explicit 0 len, pass an appropriate nonzero
  2875. len.
  2876. Closes #6954
  2877. - [Ayushman Singh Chauhan brought this change]
  2878. docs: camelcase it like GitHub everywhere
  2879. Closes #6979
  2880. Jay Satiro (27 Apr 2021)
  2881. - [Lucas Servén Marín brought this change]
  2882. docs: fix typo in fail-with-body doc
  2883. This commit fixes a small typo in the documentation for the
  2884. --fail-with-body flag.
  2885. Closes https://github.com/curl/curl/pull/6977
  2886. - lib: fix some misuse of curlx_convert_UTF8_to_tchar
  2887. curlx_convert_UTF8_to_tchar must be freed by curlx_unicodefree, but
  2888. prior to this change some uses mistakenly called free.
  2889. I've reviewed all other uses of curlx_convert_UTF8_to_tchar and
  2890. curlx_convert_tchar_to_UTF8.
  2891. Bug: https://github.com/curl/curl/pull/6602#issuecomment-825236763
  2892. Reported-by: sergio-nsk@users.noreply.github.com
  2893. Closes https://github.com/curl/curl/pull/6938
  2894. Daniel Stenberg (27 Apr 2021)
  2895. - ntlm: precaution against super huge type2 offsets
  2896. ... which otherwise caused an integer overflow and circumvented the if()
  2897. conditional size check.
  2898. Detected by OSS-Fuzz
  2899. Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=33720
  2900. Assisted-by: Max Dymond
  2901. Closes #6975
  2902. - c-hyper: fix unused variable ‘wrote’
  2903. - libcurl-security.3: be careful of setuid
  2904. Reported-by: Harry Sintonen
  2905. Closes #6970
  2906. - [Kevin Burke brought this change]
  2907. c-hyper: don't write to set.writeheader if null
  2908. Previously if a caller set CURLOPT_WRITEFUNCTION but did not set a
  2909. CURLOPT_HEADERDATA buffer, Hyper would still attempt to write headers to
  2910. the data->set.writeheader header buffer, even though it is null. This
  2911. led to NPE segfaults attempting to use libcurl+Hyper with Git, for
  2912. example.
  2913. Instead, process the client write for the status line using the same
  2914. logic we use to process the client write for the later HTTP headers,
  2915. which contains the appropriate guard logic. As a side benefit,
  2916. data->set.writeheader is now only read in one file instead of two.
  2917. Fixes #6619
  2918. Fixes abetterinternet/crustls#49
  2919. Fixes hyperium/hyper#2438
  2920. Closes #6971
  2921. - wolfssl: handle SSL_write() returns 0 for error
  2922. Reported-by: Timo Lange
  2923. Closes #6967
  2924. - easy: ignore sigpipe in curl_easy_send
  2925. Closes #6965
  2926. - sigpipe: ignore SIGPIPE when using wolfSSL as well
  2927. Closes #6966
  2928. - libcurl-security.3: don't try to filter IPv4 hosts based on the URL
  2929. Closes #6942
  2930. - [Harry Sintonen brought this change]
  2931. nss_set_blocking: avoid static for sock_opt
  2932. Reviewed-by: Kamil Dudka
  2933. Closes #6945
  2934. - RELEASE-NOTES: synced
  2935. - [Yusuke Nakamura brought this change]
  2936. docs/HTTP3.md: fix nghttp2's HTTP/3 server port
  2937. Port 8443 does not work now.
  2938. Correct origin is in the quicwg's wiki.
  2939. https://github.com/quicwg/base-drafts/wiki/Implementations#ngtcp2
  2940. Closes #6964
  2941. - krb5: don't use 'static' to store PBSZ size response
  2942. ... because it makes the knowledge and usage cross-transfer in funny and
  2943. unexpected ways.
  2944. Reported-by: Harry Sintonen
  2945. Closes #6963
  2946. - [Kevin Burke brought this change]
  2947. m4: add security frameworks on Mac when compiling rustls
  2948. Previously compiling rustls on Mac would only complete if you also
  2949. compiled the SecureTransport TLS backend, which curl would prefer to
  2950. the Rust backend.
  2951. Appending these flags to LDFLAGS makes it possible to compile the
  2952. Rustls backend on Mac without the SecureTransport backend, which means
  2953. this patch will make it possible for Mac users to use the Rustls
  2954. backend for TLS.
  2955. Reviewed-by: Jacob Hoffman-Andrews
  2956. Fixes #6955
  2957. Cloes #6956
  2958. - krb5: remove the unused 'overhead' function
  2959. Closes #6947
  2960. - [Johann150 brought this change]
  2961. curl_url_set.3: add memory management information
  2962. wording taken from man page for CURLOPT_URL.3
  2963. As far as I can see, the URL part is either malloc'ed before due to
  2964. encoding or it is strdup'ed.
  2965. Closes #6953
  2966. - [Jacob Hoffman-Andrews brought this change]
  2967. c-hpyer: fix handling of zero-byte chunk from hyper
  2968. Closes #6951
  2969. - CURLOPT_POSTFIELDS.3: clarify how it gets the size of the data
  2970. Ref: https://curl.se/mail/lib-2021-04/0085.html
  2971. Closes #6943
  2972. - [Ralph Langendam brought this change]
  2973. cmake: make libcurl output filename configurable
  2974. Reviewed-by: Jakub Zakrzewski
  2975. Closes #6933
  2976. - [Patrick Monnerat brought this change]
  2977. vtls: reset ssl use flag upon negotiation failure
  2978. Fixes the segfault in ldaps disconnect.
  2979. Reported-by: Illarion Taev
  2980. Fixes #6934
  2981. Closes #6937
  2982. - configure: fix typo in TLS error message
  2983. Reported-by: Pontus Lundkvist
  2984. - README: link to the commercial support option
  2985. Jay Satiro (22 Apr 2021)
  2986. - [Martin Halle brought this change]
  2987. version: add gsasl_version to curl_version_info_data
  2988. - Add gsasl_version string and bump to CURLVERSION_TENTH.
  2989. Ref: https://curl.se/mail/lib-2021-04/0003.html
  2990. Closes https://github.com/curl/curl/pull/6843
  2991. - [Morten Minde Neergaard brought this change]
  2992. schannel: Support strong crypto option
  2993. - Support enabling strong crypto via optional user cipher list when
  2994. USE_STRONG_CRYPTO or SCH_USE_STRONG_CRYPTO is in the list.
  2995. MSDN says SCH_USE_STRONG_CRYPTO "Instructs Schannel to disable known
  2996. weak cryptographic algorithms, cipher suites, and SSL/TLS protocol
  2997. versions that may be otherwise enabled for better interoperability."
  2998. Ref: https://curl.se/mail/lib-2021-02/0066.html
  2999. Ref: https://curl.se/docs/manpage.html#--ciphers
  3000. Ref: https://curl.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html
  3001. Ref: https://docs.microsoft.com/en-us/windows/win32/api/schannel/ns-schannel-schannel_cred
  3002. Closes https://github.com/curl/curl/pull/6734
  3003. Daniel Stenberg (22 Apr 2021)
  3004. - RELEASE-NOTES: synced
  3005. - ci: adapt to configure requiring an explicit TLS choice
  3006. - configure: split out each TLS library detector into its own function
  3007. ... and put those functions in separate m4 files per TLS library.
  3008. - configure: make the TLS library choice(s) explicit
  3009. configure no longer tries to find a TLS library by default, but all
  3010. libraries are now equal: the user needs to explicitly ask what TLS
  3011. library or libraries to use.
  3012. If no TLS library is selected, configure will error out unless
  3013. --without-ssl is explicitly used to request a built without TLS (as that
  3014. is very rare these days).
  3015. Removes: --with-winssl, --with-darwinssl and all --without-* options for
  3016. TLS libraries.
  3017. Closes #6897
  3018. - tests/disable-scan.pl: also scan all m4 files
  3019. Fixes test 1165 when functions are moved from configure.ac to files in
  3020. m4/
  3021. Jay Satiro (22 Apr 2021)
  3022. - schannel: Disable auto credentials; add an option to enable it
  3023. - Disable auto credentials by default. This is a breaking change
  3024. for clients that are using it, wittingly or not.
  3025. - New libcurl ssl option value CURLSSLOPT_AUTO_CLIENT_CERT tells libcurl
  3026. to automatically locate and use a client certificate for
  3027. authentication, when requested by the server.
  3028. - New curl tool options --ssl-auto-client-cert and
  3029. --proxy-ssl-auto-client-cert map to CURLSSLOPT_AUTO_CLIENT_CERT.
  3030. This option is only supported for Schannel (the native Windows SSL
  3031. library). Prior to this change Schannel would, with no notification to
  3032. the client, attempt to locate a client certificate and send it to the
  3033. server, when requested by the server. Since the server can request any
  3034. certificate that supports client authentication in the OS certificate
  3035. store it could be a privacy violation and unexpected.
  3036. Fixes https://github.com/curl/curl/issues/2262
  3037. Reported-by: Jeroen Ooms
  3038. Assisted-by: Wes Hinsley
  3039. Assisted-by: Rich FitzJohn
  3040. Ref: https://curl.se/mail/lib-2021-02/0066.html
  3041. Reported-by: Morten Minde Neergaard
  3042. Closes https://github.com/curl/curl/pull/6673
  3043. Daniel Stenberg (22 Apr 2021)
  3044. - [Michał Antoniak brought this change]
  3045. vtls: deduplicate some DISABLE_PROXY ifdefs
  3046. continue from #5735
  3047. - using SSL_HOST_NAME, SSL_HOST_DISPNAME, SSL_PINNED_PUB_KEY for other
  3048. tls backend
  3049. - create SSL_HOST_PORT
  3050. Closes #6660
  3051. Jay Satiro (22 Apr 2021)
  3052. - OS400: fix typo
  3053. CURLVERSION_HEIGHTH -> CURLVERSION_EIGHTH
  3054. Daniel Stenberg (22 Apr 2021)
  3055. - checksrc: complain on == NULL or != 0 checks in conditions
  3056. ... to make them all consistenly use if(!var) and if(var)
  3057. Also added a few missing warnings to the documentation.
  3058. Closes #6912
  3059. - tidy-up: make conditional checks more consistent
  3060. ... remove '== NULL' and '!= 0'
  3061. Closes #6912
  3062. - [Patrick Monnerat brought this change]
  3063. vauth: factor base64 conversions out of authentication procedures
  3064. Input challenges and returned messages are now in binary.
  3065. Conversions from/to base64 are performed by callers (currently curl_sasl.c
  3066. and http_ntlm.c).
  3067. Closes #6654
  3068. - [Patrick Monnerat brought this change]
  3069. bufref: buffer reference support
  3070. A struct bufref holds a buffer pointer, a data size and a destructor.
  3071. When freed or its contents are changed, the previous buffer is implicitly
  3072. released by the associated destructor. The data size, although not used
  3073. internally, allows binary data support.
  3074. A unit test checks its handling methods: test 1661
  3075. Closes #6654
  3076. - [Patrick Monnerat brought this change]
  3077. os400: additional support for options metadata
  3078. New functions curl_easy_option_by_name_ccsid() and
  3079. curl_easy_option_get_name_ccsid() allows accessing metadata in alternate
  3080. character encoding.
  3081. This commit also updates curl_version_info_ccsid() to handle info version 9
  3082. and adds recent definitions to the ILE/RPG include file.
  3083. Documentation updated accordingly.
  3084. Reviewed-by: Jon Rumsey
  3085. Closes #6574
  3086. - [Patrick Monnerat brought this change]
  3087. test server: take care of siginterrupt() deprecation
  3088. Closes #6529
  3089. Marc Hoersken (21 Apr 2021)
  3090. - lib1564.c: enable last wakeup test part on Windows
  3091. Suggested-by: Gergely Nagy
  3092. Reviewed-by: Jay Satiro
  3093. Reviewed-by: Marcel Raad
  3094. Closes #6245
  3095. - multi: fix slow write/upload performance on Windows
  3096. Reset FD_WRITE by sending zero bytes which is permissible
  3097. and will be treated by implementations as successful send.
  3098. Without this we won't be notified in case a socket is still
  3099. writable if we already received such a notification and did
  3100. not send any data afterwards on the socket. This would lead
  3101. to waiting forever on a writable socket being writable again.
  3102. Assisted-by: Tommy Odom
  3103. Reviewed-by: Jay Satiro
  3104. Reviewed-by: Marcel Raad
  3105. Tested-by: tmkk on github
  3106. Bug: #6146
  3107. Closes #6245
  3108. - multi: reduce Win32 API calls to improve performance
  3109. 1. Consolidate pre-checks into a single Curl_poll call:
  3110. This is an attempt to restructure the code in Curl_multi_wait
  3111. in such a way that less syscalls are made by removing individual
  3112. calls to Curl_socket_check via SOCKET_READABLE/SOCKET_WRITABLE.
  3113. 2. Avoid resetting the WinSock event multiple times:
  3114. We finally call WSAResetEvent anyway, so specifying it as
  3115. an optional parameter to WSAEnumNetworkEvents is redundant.
  3116. 3. Wakeup directly in case no sockets are being monitoring:
  3117. Fix the WinSock based implementation to skip extra waiting by
  3118. not sleeping in case no sockets are to be waited on and just
  3119. the WinSock event is being monitored for wakeup functionality.
  3120. Assisted-by: Tommy Odom
  3121. Reviewed-by: Jay Satiro
  3122. Reviewed-by: Marcel Raad
  3123. Bug: #6146
  3124. Closes #6245
  3125. - Revert "Revert 'multi: implement wait using winsock events'"
  3126. This reverts commit 2260e0ebe6d45529495231b3e37a0c58fb92a6a2,
  3127. also restoring previous follow up changes which were reverted.
  3128. Authored-by: rcombs on github
  3129. Authored-by: Marc Hörsken
  3130. Reviewed-by: Jay Satiro
  3131. Reviewed-by: Marcel Raad
  3132. Restores #5634
  3133. Reverts #6281
  3134. Part of #6245
  3135. Daniel Stenberg (21 Apr 2021)
  3136. - Revert "cmake: make libcurl library output name configurable"
  3137. This reverts commit 1cba36d2166c396f987eea587cf92671b27acb92.
  3138. CMake provides properties that can be set on a target to rename the
  3139. output artifact without changing the name of a target.
  3140. Ref: #6899
  3141. - [Michael Kolechkin brought this change]
  3142. sectransp: allow cipher name to be specified
  3143. Add parser for CURLOPT_SSL_CIPHER_LIST option for Secure Transport (ST)
  3144. back-end. Similar to NSS and GSKit back-ends, new code parses string
  3145. value and configures ST library to use those ciphers for communication.
  3146. Create cipher spec data structure and initialize the array of specs with
  3147. cipher number, name, alias, and 'weak' flag.
  3148. Mark triple-DES ciphers as 'weak', and exclude them from the default
  3149. ciphers list.
  3150. Closes #6464
  3151. - [Michael Kolechkin brought this change]
  3152. NSS: add ciphers to map
  3153. Add cipher names to the `cipherlist` map, based on the list of ciphers
  3154. implemented by the NSS in the source code file
  3155. https://github.com/nss-dev/nss/blob/master/lib/ssl/sslenum.c
  3156. Closes #6670
  3157. - http2: remove DEBUG_HTTP2
  3158. Accidentally committed in 605e84235
  3159. - [Ralph Langendam brought this change]
  3160. cmake: make libcurl library output name configurable
  3161. Closes #6899
  3162. - sws: #ifdef S_IFSOCK use
  3163. SCO OpenServer 5.0.7 does not define S_IFSOCK.
  3164. Reported-by: Kevin R. Bulgrien
  3165. Bug: https://curl.se/mail/lib-2021-04/0074.html
  3166. Closes #6926
  3167. - curl_setup: provide the shutdown flags wider
  3168. By using #ifdef on the symbol names to work on anything that don't
  3169. provide them. SCO OpenServer 5.0.7, sys/socket.h does not define either
  3170. SHUT_RDWR, SHUT_RD, and SHUT_WR.
  3171. Reported-by: Kevin R. Bulgrien
  3172. Bug: https://curl.se/mail/lib-2021-04/0073.html
  3173. Closes #6925
  3174. - connect: use CURL_SA_FAMILY_T for portability
  3175. Reported-by: Kevin R. Bulgrien
  3176. Bug: https://curl.se/mail/lib-2021-04/0071.html
  3177. Closes #6918
  3178. - urlapi: make sure no +/- signs are accepted in IPv4 numericals
  3179. Follow-up to 56a037cc0ad1b2. Extends test 1560 to verify.
  3180. Reported-by: Tuomas Siipola
  3181. Fixes #6916
  3182. Closes #6917
  3183. - ConnectionExists: respect requests for h1 connections better
  3184. ... for situations when multiplexing isn't enabled on the h2 connection
  3185. and h1 is explicitly requested for the transfer.
  3186. Assisted-by: Gergely Nagy
  3187. - multi: don't close connection HTTP_1_1_REQUIRED
  3188. The ConnectionExists() function will note that the new transfer wants
  3189. less then h2 and that it can't multiplex it and therefor opt to open a
  3190. new connection instead.
  3191. - http2: move the stream error field to the per-transfer storage
  3192. Storing a stream error in the per-connection struct was an error that lead to
  3193. race conditions as subsequent stream handling could overwrite the error code
  3194. before it was used for the stream with the actual problem.
  3195. Closes #6910
  3196. - http2: call the handle-closed function correctly on closed stream
  3197. This was this one condition where the stream could be closed due to an
  3198. error and the function would still wrongly just return 0 for it.
  3199. Reported-by: Gergely Nagy
  3200. Fixes #6862
  3201. Closes #6910
  3202. - test1660: check the created HSTS file as text mode
  3203. Closes #6922
  3204. - RELEASE-NOTES: synced
  3205. - test 493: require https in curl to run
  3206. Closes #6927
  3207. Jay Satiro (20 Apr 2021)
  3208. - tool_operate: don't discard failed parallel transfer result
  3209. - Save a parallel transfer's result code only when it fails and the
  3210. transfer is not being retried.
  3211. Prior to this change the result code was always set which meant that a
  3212. failed result could be erroneously discarded if a different transfer
  3213. later had a successful result (CURLE_OK).
  3214. Before:
  3215. > curl --fail -Z https://httpbin.org/status/404 https://httpbin.org/delay/10
  3216. > echo %ERRORLEVEL%
  3217. 0
  3218. After:
  3219. > curl --fail -Z https://httpbin.org/status/404 https://httpbin.org/delay/10
  3220. > echo %ERRORLEVEL%
  3221. 22
  3222. Closes #xxxx
  3223. - [Georeth Zhou brought this change]
  3224. openssl: fix build error with OpenSSL < 1.0.2
  3225. Closes https://github.com/curl/curl/pull/6920
  3226. Viktor Szakats (19 Apr 2021)
  3227. - README.md: delete Codacy UTM parameters & follow permanent redirect [ci skip]
  3228. UTM parameters leak referrer and various marketing/tracking information
  3229. even if these would normally be stripped by website or client policy.
  3230. This link also works fine without them. Also took the opportunity to
  3231. update the URL to the one pointed to by the previous one via permanent
  3232. redirect.
  3233. Reviewed-by: Daniel Stenberg
  3234. Closes #6919
  3235. Daniel Stenberg (19 Apr 2021)
  3236. - urlapi: "normalize" numerical IPv4 host names
  3237. When the host name in a URL is given as an IPv4 numerical address, the
  3238. address can be specified with dotted numericals in four different ways:
  3239. a32, a.b24, a.b.c16 or a.b.c.d and each part can be specified in
  3240. decimal, octal (0-prefixed) or hexadecimal (0x-prefixed).
  3241. Instead of passing on the name as-is and leaving the handling to the
  3242. underlying name functions, which made them not work with c-ares but work
  3243. with getaddrinfo, this change now makes the curl URL API itself detect
  3244. and "normalize" host names specified as IPv4 numericals.
  3245. The WHATWG URL Spec says this is an okay way to specify a host name in a
  3246. URL. RFC 3896 does not allow them, but curl didn't prevent them before
  3247. and it seems other RFC 3896-using tools have not either. Host names used
  3248. like this are widely supported by other tools as well due to the
  3249. handling being done by getaddrinfo and friends.
  3250. I decided to add the functionality into the URL API itself so that all
  3251. users of these functions get the benefits, when for example wanting to
  3252. compare two URLs. Also, it makes curl built to use c-ares now support
  3253. them as well and make curl builds more consistent.
  3254. The normalization makes HTTPS and virtual hosted HTTP work fine even
  3255. when curl gets the address specified using one of the "obscure" formats.
  3256. Test 1560 is extended to verify.
  3257. Fixes #6863
  3258. Closes #6871
  3259. - libssh: fix "empty expression statement has no effect" warnings
  3260. ... by fixing macros to do-while constructs and moving out the calls to
  3261. "break" outside of the actual macro. It also fixes the problem where the
  3262. macro was used witin a loop and the break didn't do right.
  3263. Reported-by: Emil Engler
  3264. Fixes #6847
  3265. Closes #6909
  3266. - hsts: enable by default
  3267. No longer considered experimental.
  3268. Closes #6700
  3269. - vtls: refuse setting any SSL version
  3270. ... previously they were supported if a TLS library would (unexpectedly)
  3271. still support them, but from this change they will be refused already in
  3272. curl_easy_setopt(). SSLv2 and SSLv3 have been known to be insecure for
  3273. many years now.
  3274. Closes #6773
  3275. - curl: ignore options asking for SSLv2 or SSLv3
  3276. Instead output a warning about it and continue with the defaults.
  3277. These SSL versions are typically not supported by the TLS libraries since a
  3278. long time back already since they are inherently insecure and broken. Asking
  3279. for them to be used will just cause an error to be returned slightly later.
  3280. In the unlikely event that a user's TLS library actually still supports these
  3281. protocol versions, this change might make the request a little less insecure.
  3282. Closes #6772
  3283. - test972: verify the json output with jsonlint
  3284. Make sure one of the azure jobs has jsonlint installed so that the test
  3285. runs there.
  3286. Ref: #6905
  3287. - [Jay Satiro brought this change]
  3288. tool_writeout: fix the HTTP_CODE json output
  3289. Update test 970 accordingly.
  3290. Reported-by: Michal Rus
  3291. Fixes #6905
  3292. Closes #6906
  3293. - openldap: protect SSL-specific code with proper #ifdef
  3294. Closes #6901
  3295. - libssh2: fix Value stored to 'sshp' is never read
  3296. Pointed out by scan-build
  3297. Closes #6900
  3298. - [Victor Vieux brought this change]
  3299. tool_getparam: replace (in-place) '%20' by '+' according to RFC1866
  3300. Signed-off-by: Victor Vieux <victorvieux@gmail.com>
  3301. Closes #6895
  3302. - configure: provide --with-openssl, deprecate --with-ssl
  3303. Makes the option more explicit.
  3304. Closes #6887
  3305. - RELEASE-NOTES: synced
  3306. and bumped curlver to 7.77.0
  3307. - [Javier Blazquez brought this change]
  3308. rustls: only return CURLE_AGAIN when TLS session is fully drained
  3309. The code in cr_recv was returning prematurely as soon as the socket
  3310. reported no more data to read. However, this could be leaving some
  3311. unread plaintext data in the rustls session from a previous call,
  3312. causing causing the transfer to hang if the socket never receives
  3313. further data.
  3314. We need to ensure that the session is fully drained of plaintext data
  3315. before returning CURLE_AGAIN to the caller.
  3316. Reviewed-by: Jacob Hoffman-Andrews
  3317. Closes #6894
  3318. - cookie: CURLOPT_COOKIEFILE set to NULL switches off cookies
  3319. Add test 676 to verify that setting CURLOPT_COOKIEFILE to NULL again clears
  3320. the cookiejar from memory.
  3321. Reported-by: Stefan Karpinski
  3322. Fixes #6889
  3323. Closes #6891
  3324. Version 7.76.1 (14 Apr 2021)
  3325. Daniel Stenberg (14 Apr 2021)
  3326. - RELEASE-NOTES: synced
  3327. curl 7.76.1 release
  3328. - THANKS: add names from 7.76.1
  3329. - misc: update copyright year ranges to match latest updates
  3330. - [Tatsuhiro Tsujikawa brought this change]
  3331. ngtcp2: Use ALPN h3-29 for now
  3332. Fixes #6864
  3333. Cloes #6886
  3334. Jay Satiro (11 Apr 2021)
  3335. - TODO: remove 18.22 --fail-with-body
  3336. --fail-with-body was added in 8a964cb (precedes curl-7_76_0).
  3337. Daniel Stenberg (10 Apr 2021)
  3338. - [Jürgen Gmach brought this change]
  3339. src/tool_vms.c: remove duplicated word in comment
  3340. Closes #6881
  3341. - configure: fix CURL_DARWIN_CFLAGS use
  3342. The macro name change was not completely done.
  3343. Follow-up to 5d2c384452543c
  3344. Bug: https://github.com/curl/curl/commit/5d2c384452543c7b6c9fb02eaa0afc84fd5ab941#commitcomment-49315187
  3345. Reported-by: Marcel Raad
  3346. Closes #6878
  3347. - [Anthony Shaw brought this change]
  3348. github/workflow: add "security-extended" to codeql-analysis.yml
  3349. Extends the CodeQL code scan.
  3350. Closes #6815
  3351. - [Jochem Broekhoff brought this change]
  3352. examples/hiperfifo.c: check event_initialized before delete
  3353. If event_del is called with the event struct (still) zeroed out, a
  3354. segmentation fault may occur. event_initialized checks whether the
  3355. event struct is nonzero.
  3356. Closes #6876
  3357. - [Patrick Monnerat brought this change]
  3358. ntlm: fix negotiated flags usage
  3359. According to Microsoft document MS-NLMP, current flags usage is not
  3360. accurate: flag NTLMFLAG_NEGOTIATE_NTLM2_KEY controls the use of
  3361. extended security in an NTLM authentication message and NTLM version 2
  3362. cannot be negotiated within the protocol.
  3363. The solution implemented here is: if the extended security flag is set,
  3364. prefer using NTLM version 2 (as a server featuring extended security
  3365. should also support version 2). If version 2 has been disabled at
  3366. compile time, use extended security.
  3367. Tests involving NTLM are adjusted to this new behavior.
  3368. Fixes #6813
  3369. Closes #6849
  3370. - [Patrick Monnerat brought this change]
  3371. ntlm: support version 2 on 32-bit platforms
  3372. Closes #6849
  3373. - [Patrick Monnerat brought this change]
  3374. curl_ntlm_core.h: simplify conditionals for USE_NTLM2SESSION
  3375. ... as !defined(CURL_DISABLE_CRYPTO_AUTH) is a prerequisite for the
  3376. whole NTLM.
  3377. Closes #6849
  3378. - lib: remove unused HAVE_INET_NTOA_R* defines
  3379. Closes #6867
  3380. - [Michael Forney brought this change]
  3381. configure: include <time.h> unconditionally
  3382. In 2682e5f5, several instances of AC_HEADER_TIME were removed since
  3383. it is a deprecated autoconf macro. However, this was the macro that
  3384. defined TIME_WITH_SYS_TIME, which was used to indicate that <time.h>
  3385. can be included alongside <sys/time.h>. TIME_WITH_SYS_TIME is still
  3386. used in the configure test body and since it is no longer defined,
  3387. <time.h> is *not* included on systems that have <sys/time.h>.
  3388. In particular, at least on musl libc and glibc, <sys/time.h> does
  3389. not implicitly include <time.h> and does not declare clock_gettime,
  3390. gmtime_r, or localtime_r. This causes configure to fail to detect
  3391. those functions.
  3392. The AC_HEADER_TIME macro deprecation text says
  3393. > All current systems provide time.h; it need not be checked for.
  3394. > Not all systems provide sys/time.h, but those that do, all allow
  3395. > you to include it and time.h simultaneously.
  3396. So, to fix this issue, simply include <time.h> unconditionally when
  3397. testing for time-related functions and in libcurl, and don't bother
  3398. checking for it.
  3399. Closes #6859
  3400. - [Michael Forney brought this change]
  3401. configure: remove use of RETSIGTYPE
  3402. This was previously defined by the obsolete AC_TYPE_SIGNAL macro,
  3403. which was removed in 2682e5f5. The deprecation text says
  3404. > Your code may safely assume C89 semantics that RETSIGTYPE is void.
  3405. So, remove it and just use void instead.
  3406. Closes #6861
  3407. - [Muhammed Yavuz Nuzumlalı brought this change]
  3408. install: add instructions for Apple Darwin platforms
  3409. Closes #6860
  3410. - [Muhammed Yavuz Nuzumlalı brought this change]
  3411. configure: disable min version set for Darwin
  3412. Fixes #6838
  3413. Closes #6860
  3414. - [David Hu brought this change]
  3415. docs/HTTP3.md: update the build instruction using gnutls
  3416. In ngtcp2 the `with-gnutls` option is disabled by default, which will
  3417. cause `curl` unable to be `make` because of lacking the libraries
  3418. needed.
  3419. Closes #6857
  3420. - RELEASE-NOTES: synced
  3421. - typecheck-gcc: make the ssl-ctx-cb check use SSL_CTX pointers
  3422. ... and not values.
  3423. Reported-by: locpyl-tidnyd on github
  3424. Fixes #6818
  3425. Closes #6819
  3426. - ngtcp2+gnutls: clear credentials when freed
  3427. ... to avoid double-free.
  3428. Reported-by: Kenneth Davidson
  3429. Fixes #6824
  3430. Closes #6856
  3431. Jay Satiro (5 Apr 2021)
  3432. - [Cherish98 brought this change]
  3433. tool_progress: Fix progress meter in parallel mode
  3434. Make sure the total amount of DL/UL bytes are counted before the
  3435. transfer finalizes. Otherwise if a transfer finishes too quick, its
  3436. total numbers are not added, and results in a DL%/UL% that goes above
  3437. 100%.
  3438. Detail:
  3439. progress_meter() is called periodically, and it may not catch a
  3440. transfer's total bytes if the value was unknown during the last call,
  3441. and the transfer is finished and deleted (i.e., lost) during the next
  3442. call.
  3443. Closes https://github.com/curl/curl/pull/6840
  3444. - [Emil Engler brought this change]
  3445. libssh: get rid of PATH_MAX
  3446. This removes the last occurrence of PATH_MAX inside our libssh
  3447. implementation by calculating the path length from the string length of
  3448. the two components.
  3449. Closes #6829
  3450. Daniel Stenberg (5 Apr 2021)
  3451. - http_proxy: only loop on 407 + close if we have credentials
  3452. ... to fix the retry-loop.
  3453. Add test 718 to verify.
  3454. Reported-by: Daniel Kurečka
  3455. Fixes #6828
  3456. Closes #6850
  3457. - h2: allow 100 streams by default
  3458. instead of 13, before the server has told how many streams it
  3459. accepts. The server can always reject new streams anyway if we go above
  3460. what it accepts.
  3461. Ref: #6826
  3462. Closes #6852
  3463. - [Luke Granger-Brown brought this change]
  3464. file: support GETing directories again
  3465. After 957bc1881e686f9714c4e6a01bf33535091f0e21, we no longer compute an
  3466. expected_size for directories. This has the upshot that when we compare
  3467. even an empty Range with the available size, we fail.
  3468. This brings back the previous behaviour, which was to succeed, but with
  3469. empty content. This also removes the "Accept-ranges: bytes" header,
  3470. which is nonsensical on directories.
  3471. Adds test 3016
  3472. Fixes #6845
  3473. Closes #6846
  3474. - RELEASE-NOTES: synced
  3475. and bumped to 7.76.1
  3476. - TLS: fix HTTP/2 selection
  3477. for GnuTLS, BearSSL, mbedTLS, NSS, SChannnel, Secure Transport and
  3478. wolfSSL...
  3479. Regression since 88dd1a8a115b1f5ece (shipped in 7.76.0)
  3480. Reported-by: Kenneth Davidson
  3481. Reported-by: romamik om github
  3482. Fixes #6825
  3483. Closes #6827
  3484. Jay Satiro (2 Apr 2021)
  3485. - hostip: Fix for builds that disable all asynchronous DNS
  3486. - Define Curl_resolver_error function only when USE_CURL_ASYNC.
  3487. Prior to this change building curl without an asynchronous resolver
  3488. backend (c-ares or threaded) and without DoH (DNS-over-HTTPS, which is
  3489. also asynchronous but independent of resolver backend) would cause a
  3490. build error since Curl_resolver_error is called by and evaluates
  3491. variables only available in asynchronous builds.
  3492. Reported-by: Benbuck Nason
  3493. Fixes https://github.com/curl/curl/issues/6831
  3494. Closes https://github.com/curl/curl/pull/6832
  3495. Daniel Stenberg (31 Mar 2021)
  3496. - [Gilles Vollant brought this change]
  3497. openssl: Fix CURLOPT_SSLCERT_BLOB without CURLOPT_SSLCERT_KEY
  3498. Reported-by: Christian Schmitz
  3499. Fixes #6816
  3500. Closes #6820
  3501. Version 7.76.0 (31 Mar 2021)
  3502. Daniel Stenberg (31 Mar 2021)
  3503. - RELEASE-NOTES: synced
  3504. curl 7.76.0 release
  3505. - THANKS: added names from 7.76.0
  3506. - CURLOPT_AUTOREFERER.3: clarify that it sets the full URL
  3507. ... some users may not want that!
  3508. - define: remove CURL_DISABLE_NTLM ifdefs
  3509. It was never defined anywhere. Fixed disable-scan (test 1165) to also
  3510. scan headers, which found this issue.
  3511. Closes #6809
  3512. - vtls: fix addsessionid for non-proxy builds
  3513. Follow-up to b09c8ee15771c61
  3514. Fixes #6812
  3515. Closes #6811
  3516. - [Li Xinwei brought this change]
  3517. cmake: support WinIDN
  3518. Closes #6807
  3519. - transfer: clear 'referer' in declaration
  3520. To silence (false positive) compiler warnings about it.
  3521. Follow-up to 7214288898f5625
  3522. Reviewed-by: Marcel Raad
  3523. Closes #6810
  3524. - [Marc Hoersken brought this change]
  3525. config: fix SSPI enabling NTLM if crypto auth is disabled
  3526. Avoid enabling NTLM feature based upon Windows SSPI
  3527. being enabled in case that crypto auth is disabled.
  3528. Reported-by: Marcel Raad
  3529. Follow-up to #6277
  3530. Fixes #6803
  3531. Closes #6808
  3532. - HISTORY: add two 2021 events
  3533. - vtls: add 'isproxy' argument to Curl_ssl_get/addsessionid()
  3534. To make sure we set and extract the correct session.
  3535. Reported-by: Mingtao Yang
  3536. Bug: https://curl.se/docs/CVE-2021-22890.html
  3537. CVE-2021-22890
  3538. - [Viktor Szakats brought this change]
  3539. transfer: strip credentials from the auto-referer header field
  3540. Added test 2081 to verify.
  3541. CVE-2021-22876
  3542. Bug: https://curl.se/docs/CVE-2021-22876.html
  3543. - curl_sasl: fix compiler error with --disable-crypto-auth
  3544. ... if libgsasl was found.
  3545. Closes #6806
  3546. - [Patrick Monnerat brought this change]
  3547. ldap: only set the callback ptr for TLS context when TLS is used
  3548. Follow-up to a5eee22e594c2460f
  3549. Fixes #6804
  3550. Closes #6805
  3551. - copyright: update copyright year ranges to 2021
  3552. Reviewed-by: Emil Engler
  3553. Closes #6802
  3554. - send_speed: simplify the checks for if a speed limit is set
  3555. ... as we know the value cannot be set to negative: enforced by
  3556. setopt()
  3557. - http: cap body data amount during send speed limiting
  3558. By making sure never to send off more than the allowed number of bytes
  3559. per second the speed limit logic is given more room to actually work.
  3560. Reported-by: Fabian Keil
  3561. Bug: https://curl.se/mail/lib-2021-03/0042.html
  3562. Closes #6797
  3563. - urldata: merge "struct DynamicStatic" into "struct UrlState"
  3564. Both were used for the same purposes and there was no logical separation
  3565. between them. Combined, this also saves 16 bytes in less holes in my
  3566. test build.
  3567. Closes #6798
  3568. - tests/README.md: mentioned that en_US.UTF-8 is required
  3569. Reported-by: Oumph on github
  3570. Fixes #6768
  3571. - HISTORY: fixed the Mac OS X 10.1 release date
  3572. Based on what Wikipedia says
  3573. Jay Satiro (26 Mar 2021)
  3574. - examples: Remove threaded-shared-conn.c due to bug
  3575. Known bug 11.11 is the shared object's connection cache is not thread
  3576. safe, so we should not have an example for it.
  3577. Ref: https://github.com/curl/curl/issues/4915
  3578. Ref: https://curl.se/docs/knownbugs.html#A_shared_connection_cache_is_not
  3579. Closes https://github.com/curl/curl/pull/6795
  3580. - KNOWN_BUGS: Update 11.9 - DoH option inheritance
  3581. - Add description: Explain that some options aren't inherited because
  3582. they are not relevant for the DoH SSL connections or may result in
  3583. unexpected behavior.
  3584. - Remove the reference to #4578 (SSL verify options not inherited) since
  3585. that was fixed by #6597 (separate DoH-specific options for verify).
  3586. - Explain that DoH-specific options (those created by #6597) are
  3587. available: CURLOPT_DOH_SSL_VERIFYHOST, CURLOPT_DOH_SSL_VERIFYPEER and
  3588. CURLOPT_DOH_SSL_VERIFYSTATUS.
  3589. - Add a reference to #6605 and explain that the user's debug function is
  3590. not inherited because it would be unexpected to pass internal handles
  3591. (ie DoH handles) to the user's callback.
  3592. Closes https://github.com/curl/curl/issues/6605
  3593. Daniel Stenberg (26 Mar 2021)
  3594. - curl_easy_setopt.3: add curl_easy_option* functions to SEE ALSO
  3595. - [Jean-Philippe Menil brought this change]
  3596. openssl: ensure to check SSL_CTX_set_alpn_protos return values
  3597. SSL_CTX_set_alpn_protos() return 0 on success, and non-0 on failure
  3598. Signed-off-by: Jean-Philippe Menil <jpmenil@gmail.com>
  3599. Closes #6794
  3600. - multi: close the connection when h2=>h1 downgrading
  3601. Otherwise libcurl is likely to reuse the connection again in the next
  3602. attempt since the connection reuse logic doesn't take downgrades into
  3603. account.
  3604. Reported-by: Anthony Ramine
  3605. Fixes #6788
  3606. Closes #6793
  3607. - openssl: set the transfer pointer for logging early
  3608. Otherwise, the transfer will be NULL in the trace function when the
  3609. early handshake details arrive and then curl won't show them.
  3610. Regresssion in 7.75.0
  3611. Reported-by: David Hu
  3612. Fixes #6783
  3613. Closes #6792
  3614. - RELEASE-NOTES: synced
  3615. - TODO: Custom progress meter update interval
  3616. Ref: https://stackoverflow.com/q/66789977/93747
  3617. - docs/ABI: tighten up the language
  3618. Make the promises more firm
  3619. Closes #6786
  3620. - openldap: disconnect better
  3621. Instead of clearing the callback argument in disconnect, set it to the
  3622. (new) transfer to make sure the correct data is passed to the callbacks.
  3623. Follow-up to e467ea3bd937f38
  3624. Assisted-by: Patrick Monnerat
  3625. Closes #6787
  3626. - libssh2: kdb_callback: get the right struct pointer
  3627. After the recent conn/data refactor in this source file, this function
  3628. was mistakenly still getting the old struct pointer which would lead to
  3629. crash on servers with keyboard-interactive auth enabled.
  3630. Follow-up to a304051620b92e12b (shipped in 7.75.0)
  3631. Reported-by: Christian Schmitz
  3632. Fixes #6691
  3633. Closes #6782
  3634. - tftp: remove unused struct fields
  3635. Follow-up to d3d90ad9c00530d
  3636. Closes #6781
  3637. - openldap: avoid NULL pointer dereferences
  3638. Follow-up to a59c33ceffb8f78
  3639. Reported-by: Patrick Monnerat
  3640. Fixes #6676
  3641. Closes #6780
  3642. - http: strip default port from URL sent to proxy
  3643. To make sure the Host: header and the URL provide the same authority
  3644. portion when sent to the proxy, strip the default port number from the
  3645. URL if one was provided.
  3646. Reported-by: Michael Brown
  3647. Fixes #6769
  3648. Closes #6778
  3649. - azure: disable test 433 on azure-ubuntu
  3650. Something in that environment sets XDG_CONFIG_HOME for us in a way that
  3651. breaks the test.
  3652. Reported-by: Marc Hörsken
  3653. Fixes #6739
  3654. Closes #6777
  3655. - tftp: remove the 3600 second default timeout
  3656. ... it was never meant to be there.
  3657. Reported-by: Tomas Berger
  3658. Fixes #6774
  3659. Closes #6776
  3660. - docs: make gen.pl support *italic* and **bold**
  3661. Remove some nroffisms from the cmdline doc files to simplify editing,
  3662. and instead support this markdown style.
  3663. Closes #6771
  3664. - ngtcp2: sync with recent API updates
  3665. Closes #6770
  3666. - RELEASE-NOTES: synced
  3667. - libssh2:ssh_connect: clear session pointer after free
  3668. If libssh2_knownhost_init() returns NULL, like in an OOM situation, the
  3669. ssh session was freed but the pointer wasn't cleared which made libcurl
  3670. later call libssh2 to cleanup using the stale pointer.
  3671. Fixes #6764
  3672. Closes #6766
  3673. - [Jacob Hoffman-Andrews brought this change]
  3674. docs: document version of crustls dependency
  3675. This also pins a specific release in the Travis test so future
  3676. API-breaking changins in crustls won't break curl builds.
  3677. Add RUSTLS documentation to release tarball.
  3678. Enable running tests for rustls, minus FTP tests (require
  3679. connect_blocking, which rustls doesn't implement) and 313 (requires CRL
  3680. handling).
  3681. Closes #6763
  3682. - [Jacob Hoffman-Andrews brought this change]
  3683. rustls: Handle close_notify.
  3684. If we get a close_notify, treat that as EOF. If we get an EOF from the
  3685. TCP stream, treat that as an error (because we should have ended the
  3686. connection earlier, when we got a close_notify).
  3687. Closes #6763
  3688. - docs: clarify timeouts for queued transfers in multi API
  3689. Closes #6758
  3690. - ftpserver: only load the preprocessed test file
  3691. We always preprocess and tests are no longer sensible to load "raw"
  3692. Closes #6738
  3693. - tests: use %TESTNUMBER instead of fixed number
  3694. This makes the tests easier to copy and relocate to other test numbers
  3695. without having to update content.
  3696. Closes #6738
  3697. - KNOWN_BUGS: CURLOPT_OPENSOCKETPAIRFUNCTION is missing
  3698. Closes #5747
  3699. - TODO: provide timing info for each redirect
  3700. Closes #6743
  3701. Jay Satiro (17 Mar 2021)
  3702. - docs: Add SSL backend names to CURL_SSL_BACKEND
  3703. - Document the names that can be used with CURL_SSL_BACKEND:
  3704. bearssl, gnutls, gskit, mbedtls, mesalink, nss, openssl, rustls,
  3705. schannel, secure-transport, wolfssl
  3706. Ref: https://github.com/curl/curl/issues/2209#issuecomment-360623286
  3707. Ref: https://github.com/curl/curl/issues/6717#issuecomment-800745201
  3708. Closes https://github.com/curl/curl/pull/6755
  3709. - docs: Explain DOH transfers inherit some SSL settings
  3710. - Document in DOH that some SSL settings are inherited but DOH hostname
  3711. and peer verification are not and are controlled separately.
  3712. - Document that CURLOPT_SSL_CTX_FUNCTION is inherited by DOH handles but
  3713. we're considering changing behavior to no longer inherit it. Request
  3714. feedback.
  3715. Closes https://github.com/curl/curl/pull/6688
  3716. Daniel Stenberg (17 Mar 2021)
  3717. - http: make 416 not fail with resume + CURLOPT_FAILONERRROR
  3718. When asked to resume a download, libcurl will convert that to HTTP logic
  3719. and if then the entire file is already transferred it will result in a
  3720. 416 response from the HTTP server. With CURLOPT_FAILONERRROR set in that
  3721. scenario, it should *not* lead to an error return.
  3722. Updated test 1156, added test 1273
  3723. Reported-by: Jonathan Watt
  3724. Fixes #6740
  3725. Closes #6753
  3726. - Curl_timeleft: check both timeouts during connect
  3727. The duration of a connect and the total transfer are calculated from two
  3728. different time-stamps. It can end up with the total timeout triggering
  3729. before the connect timeout expires and we should make sure to
  3730. acknowledge whichever timeout that is reached first.
  3731. This is especially notable when a transfer first sits in PENDING, as
  3732. that time is counted in the total time but the connect timeout is based
  3733. on the time since the handle changed to the CONNECT state.
  3734. The CONNECTTIMEOUT is per connect attempt. The TIMEOUT is for the entire
  3735. operation.
  3736. Fixes #6744
  3737. Closes #6745
  3738. Reported-by: Andrei Bica
  3739. Assisted-by: Jay Satiro
  3740. - configure: remove use of deprecated macros
  3741. AC_HEADER_TIME, AC_HEADER_STDC and AC_TYPE_SIGNAL
  3742. - configure: make AC_TRY_* into AC_*_IFELSE
  3743. ... as the former versions are deprecated.
  3744. - configure: s/AC_HELP_STRING/AS_HELP_STRING
  3745. AC_HELP_STRING is deprecated in 2.70+ and I believe AS_HELP_STRING works
  3746. already since 2.59 so bump the minimum required version to that.
  3747. Reported-by: Emil Engler
  3748. Fixes #6647
  3749. Closes #6748
  3750. - RELEASE-NOTES: synced
  3751. - travis: use ubuntu nghttp2 package instead of build our own
  3752. Closes #6751
  3753. - travis: bump wolfssl to 4.7.0
  3754. - travis: only build wolfssl when needed
  3755. Closes #6751
  3756. - [Jacob Hoffman-Andrews brought this change]
  3757. rustls: allocate a buffer for TLS data.
  3758. Previously, rustls was using an on-stack array for TLS data. However,
  3759. crustls has an (unusual) requirement that buffers it deals with are
  3760. initialized before writing to them. By using calloc, we can ensure the
  3761. buffer is initialized once and then reuse it across calls.
  3762. Closes #6742
  3763. - travis: add a rustls build
  3764. ... that doesn't run any tests (yet)
  3765. Closes #6750
  3766. - HTTP2: remove the outdated remark about multiplexing for the tool
  3767. - [Robert Ronto brought this change]
  3768. http2: don't set KEEP_SEND when there's no more data to be sent
  3769. this should fix an issue where curl sometimes doesn't send out a request
  3770. with authorization info after a 401 is received over http2
  3771. Closes #6747
  3772. Marc Hoersken (15 Mar 2021)
  3773. - config: fix building SMB with configure using Win32 Crypto
  3774. Align conditions for NTLM features between CMake and configure
  3775. builds by differentiating between USE_NTLM and USE_CURL_NTLM_CORE,
  3776. just like curl_setup.h does internally to detect support of:
  3777. - USE_NTLM: required for NTLM crypto authentication feature
  3778. - USE_CURL_NTLM_CORE: required for SMB protocol
  3779. Implement USE_WIN32_CRYPTO detection by checking for Crypt functions
  3780. in wincrypt.h which are not available in the Windows App environment.
  3781. Link advapi32 and crypt32 for Crypto API and Schannel SSL backend.
  3782. Fix condition of Schannel SSL backend in CMake build accordingly.
  3783. Reviewed-by: Marcel Raad
  3784. Closes #6277
  3785. - config: fix detection of restricted Windows App environment
  3786. Move the detection of the restricted Windows App environment
  3787. in curl_setup.h before the definition of USE_WIN32_CRYPTO
  3788. via included config-win32.h in case no build system is used.
  3789. Reviewed-by: Marcel Raad
  3790. Part of #6277
  3791. Daniel Stenberg (15 Mar 2021)
  3792. - HISTORY: curl 7.7.2 was the first version used in Mac OS X 10.1
  3793. - gen.pl: quote "bare" minuses in the nroff curl.1
  3794. Reported-by: Alejandro Colomar
  3795. Fixes #6698
  3796. Closes #6722
  3797. Daniel Gustafsson (14 Mar 2021)
  3798. - hsts: remove unused defines
  3799. MAX_HSTS_SUBLEN and MAX_HSTS_SUBLENSTR were unused from the initial commit,
  3800. and mostly likely leftovers from early development. Remove as they're not
  3801. used for anything.
  3802. Closes #6741
  3803. Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  3804. Daniel Stenberg (12 Mar 2021)
  3805. - github: add torture-ftp for FTP-only torture testing
  3806. and at 20% to try to keep the run-time reasonable
  3807. Closes #6728
  3808. - travis: split "torture" into a separate "events" build as well
  3809. Run torture without FTP and reducing coverage to 20%
  3810. For some reason the torture tests now run a lot slower on travis and run
  3811. into the 50 minute limit all the time.
  3812. Closes #6728
  3813. - ftp: fix memory leak in ftp_done
  3814. If after a transfer is complete Curl_GetFTPResponse() returns an error,
  3815. curl would not free the ftp->pathalloc block.
  3816. Found by torture-testing test 576
  3817. Closes #6737
  3818. - [oxalica brought this change]
  3819. http2: fail if connection terminated without END_STREAM
  3820. Closes #6736
  3821. - RELEASE-NOTES: synced
  3822. - [Jacob Hoffman-Andrews brought this change]
  3823. rustls: support CURLOPT_SSL_VERIFYPEER
  3824. This requires the latest main branch of crustls, which provides
  3825. rustls_client_config_builder_dangerous_set_certificate_verifier and
  3826. rustls_client_config_builder_set_enable_sni.
  3827. This refactors the session setup into its own function, and adds a new
  3828. function cr_hostname_is_ip. Because crustls doesn't support verification
  3829. of IP addresses, special handling is needed: We disable SNI and set a
  3830. placeholder hostname (which never actually gets sent on the wire).
  3831. Closes #6719
  3832. Daniel Gustafsson (12 Mar 2021)
  3833. - cookies: Fix potential NULL pointer deref with PSL
  3834. Curl_cookie_init can be called with data being NULL, and this can in turn
  3835. be passed to Curl_cookie_add, meaning that both functions must be careful
  3836. to only use data where it's checked for being a NULL pointer. The libpsl
  3837. support code does however dereference data without checking, so if we are
  3838. indeed having an unset data pointer we cannot PSL check the cookiedomain.
  3839. This is currently not a reachable dereference, as the only caller with a
  3840. NULL data isn't passing a file to initialize cookies from, but since the
  3841. API has this contract let's ensure we hold it.
  3842. Closes #6731
  3843. Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  3844. Daniel Stenberg (12 Mar 2021)
  3845. - [Michael Hordijk brought this change]
  3846. configure: only add OpenSSL paths if they are defined
  3847. Add paths for OpenSSL compiling and linking only if they have been
  3848. defined. If they haven't been defined, we'll assume that the paths are
  3849. already available to the toolchain.
  3850. Closes #6730
  3851. Jay Satiro (12 Mar 2021)
  3852. - retry.d: Clarify transient 5xx HTTP response codes
  3853. - Clarify the only 5xx response codes that are treated as transient are
  3854. 500, 502, 503 and 504.
  3855. Prior to this change it said it treated all 5xx as transient, but the
  3856. code says otherwise.
  3857. Ref: https://github.com/curl/curl/blob/curl-7_75_0/src/tool_operate.c#L462-L495
  3858. Closes https://github.com/curl/curl/pull/6724
  3859. - retry-all-errors.d: Explain curl errors versus HTTP response errors
  3860. - Add a paragraph explaining that curl does not consider HTTP response
  3861. errors as curl errors, and how that behavior can be modified by using
  3862. --retry and --fail.
  3863. The --retry-all-errors doc says "Retry on any error" which some users
  3864. may find misleading without the added explanation.
  3865. Ref: https://curl.se/docs/faq.html#Why_do_I_get_downloaded_data_eve
  3866. Ref: https://curl.se/docs/faq.html#curl_doesn_t_return_error_for_HT
  3867. Reported-by: Lawrence Gripper
  3868. Fixes https://github.com/curl/curl/issues/6712
  3869. Closes https://github.com/curl/curl/pull/6720
  3870. Daniel Stenberg (11 Mar 2021)
  3871. - travis: switch ngtcp2 build over to quictls
  3872. The ngtcp2 project switched over to using the quictls OpenSSL fork
  3873. instead of their own patched OpenSSL. We follow suit.
  3874. Closes #6729
  3875. - test220/314: adjust to run with Hyper
  3876. - c-hyper: support automatic content-encoding
  3877. Closes #6727
  3878. - http: remove superfluous NULL assign
  3879. Closes #6727
  3880. - tool_operate: bail if set CURLOPT_HTTP09_ALLOWED returns error
  3881. Closes #6727
  3882. - setopt: error on CURLOPT_HTTP09_ALLOWED set true with Hyper
  3883. Not supported.
  3884. Closes #6727
  3885. - test306: make it not run with Hyper
  3886. ... as it tests HTTP/0.9 which Hyper doesn't support.
  3887. - test304: header CRLF cleanup to work with Hyper
  3888. - FTP: allow SIZE to fail when doing (resumed) upload
  3889. Added test 362 to verify.
  3890. Reported-by: Jordan Brown
  3891. Regression since 7ea2e1d0c5a7f (7.73.0)
  3892. Fixes #6715
  3893. Closes #6725
  3894. - configure: provide Largefile feature for curl-config
  3895. ... as cmake now does it correctly, and make test1014 check for it
  3896. Closes #6702
  3897. - config: remove CURL_SIZEOF_CURL_OFF_T use only SIZEOF_CURL_OFF_T
  3898. Make the code consistently use a single name for the size of the
  3899. "curl_off_t" type.
  3900. Closes #6702
  3901. Jay Satiro (10 Mar 2021)
  3902. - [Jun-ya Kato brought this change]
  3903. ngtcp2: Fix build error due to change in ngtcp2_addr_init
  3904. ngtcp2/ngtcp2@b8d90a9 changed the function prototype.
  3905. Closes https://github.com/curl/curl/pull/6716
  3906. Daniel Stenberg (10 Mar 2021)
  3907. - [ejanchivdorj brought this change]
  3908. multi: update pending list when removing handle
  3909. when removing a handle, most of the lists are updated but pending list
  3910. is not updated. Updating now.
  3911. Closes #6713
  3912. - [kokke brought this change]
  3913. lib1536: check ptr against NULL before dereferencing it
  3914. Closes #6710
  3915. - [kokke brought this change]
  3916. lib1537: check ptr against NULL before dereferencing it
  3917. Fixes #6707
  3918. Closes #6708
  3919. - travis: make torture tests skip TLS-SRP tests
  3920. ... as it seems to often hang.
  3921. Also: skip the "normal" tests as they're already run by many other
  3922. builds.
  3923. Closes #6705
  3924. - openssl: adapt to v3's new const for a few API calls
  3925. Closes #6703
  3926. - quiche: fix crash when failing to connect
  3927. Reported-by: ウさん
  3928. Fixes #6664
  3929. Closes #6701
  3930. - RELEASE-NOTES: synced
  3931. Fixed the release counter and added a missing contributor
  3932. - RELEASE-NOTES: synced
  3933. - dynbuf: bump the max HTTP request to 1MB
  3934. Raised from 128KB to allow longer request headers.
  3935. Reported-by: Carl Zogheib
  3936. Fixes #6681
  3937. Closes #6685
  3938. Jay Satiro (6 Mar 2021)
  3939. - schannel: Evaluate CURLOPT_SSL_OPTIONS via SSL_SET_OPTION macro
  3940. - Change use of those options from CURLOPT_SSL_OPTIONS that are not
  3941. already evaluated via SSL_SET_OPTION in schannel and secure transport
  3942. to use that instead of data->set.ssl.optname.
  3943. Example:
  3944. Evaluate SSL_SET_OPTION(no_revoke) instead of data->set.ssl.no_revoke.
  3945. This change is because options set via CURLOPT_SSL_OPTIONS
  3946. (data->set.ssl.optname) are separate from those set for HTTPS proxy via
  3947. CURLOPT_PROXY_SSL_OPTIONS (data->set.proxy_ssl.optname). The
  3948. SSL_SET_OPTION macro determines whether the connection is for HTTPS
  3949. proxy and based on that which option to evaluate.
  3950. Since neither Schannel nor Secure Transport backends currently support
  3951. HTTPS proxy in libcurl, this change is for posterity and has no other
  3952. effect.
  3953. Closes https://github.com/curl/curl/pull/6690
  3954. - [kokke brought this change]
  3955. c-hyper: Remove superfluous pointer check
  3956. `n` pointer is never NULL once set. Found by static analysis.
  3957. Ref: https://github.com/curl/curl/issues/6696
  3958. Closes https://github.com/curl/curl/pull/6697
  3959. - version.d: Add missing features to the features list
  3960. - Add missing entries for gsasl, Kerberos, NTLM_WB, TrackMemory,
  3961. Unicode and zstd.
  3962. - Remove krb4 since it's no longer a feature.
  3963. Reported-by: Ádler Jonas Gross
  3964. Fixes https://github.com/curl/curl/issues/6677
  3965. Closes https://github.com/curl/curl/pull/6687
  3966. - [Vladimir Varlamov brought this change]
  3967. docs: add missing Arg tag to --stderr
  3968. Prior to this change the required argument was not shown.
  3969. curl.1 before: --stderr
  3970. curl.1 after: --stderr <file>
  3971. curl --help before:
  3972. --stderr Where to redirect stderr
  3973. curl --help after:
  3974. --stderr <file> Where to redirect stderr
  3975. Closes https://github.com/curl/curl/pull/6692
  3976. - projects: Update VS projects for OpenSSL 1.1.x
  3977. - Update VS project templates to use the OpenSSL lib names and include
  3978. directories for OpenSSL 1.1.x.
  3979. This change means the VS project files will now build only with OpenSSL
  3980. 1.1.x when an OpenSSL configuration is chosen. Prior to this change the
  3981. project files built only with OpenSSL 1.0.x (end-of-life) when an
  3982. OpenSSL configuration was chosen.
  3983. The template changes in this commit were made by script:
  3984. libeay32.lib => libcrypto.lib
  3985. ssleay32.lib => libssl.lib
  3986. ..\..\..\..\..\openssl\inc32 => ..\..\..\..\..\openssl\include
  3987. And since the output directory now contains the includes it's prepended:
  3988. ..\..\..\..\..\openssl\build\Win{32,64}\VC{6..15}\{DLL,LIB}
  3989. {Debug,Release}\include
  3990. - Change build-openssl.bat to copy the build's include directory to the
  3991. output directory (as seen above).
  3992. Each build has its own opensslconf.h which is different so we can't just
  3993. include the source include directory any longer.
  3994. Note the include directory in the output directory is a full copy from
  3995. the build so technically we don't need to include the OpenSSL source
  3996. include directory in the template. However, I left it last in case the
  3997. user made a custom OpenSSL build using the old method which would put
  3998. opensslconf in the OpenSSL source include directory.
  3999. - Change build-openssl.bat to use a temporary install directory that is
  4000. different from the temporary build directory.
  4001. For OpenSSL 1.1.x the temporary paths must be separate not a descendant
  4002. of the other, otherwise pdb files will be lost between builds.
  4003. Ref: https://curl.se/mail/lib-2018-10/0049.html
  4004. Ref: https://gist.github.com/jay/125191c35bbeb894444eff827651f755
  4005. Ref; https://github.com/openssl/openssl/issues/10005
  4006. Fixes https://github.com/curl/curl/issues/984
  4007. Closes https://github.com/curl/curl/pull/6675
  4008. - doh: Inherit CURLOPT_STDERR from user's easy handle
  4009. Prior to this change if the user set their easy handle's error stream
  4010. to something other than stderr it was not inherited by the doh handles,
  4011. which meant that they would still write to the default standard error
  4012. stream (stderr) for verbose output.
  4013. Bug: https://github.com/curl/curl/issues/6605
  4014. Reported-by: arvids-kokins-bidstack@users.noreply.github.com
  4015. Closes https://github.com/curl/curl/pull/6661
  4016. Marc Hoersken (1 Mar 2021)
  4017. - CI/azure: replace python-impacket with python3-impacket
  4018. As of this month Azure DevOps uses Ubuntu 20.04 LTS which
  4019. no longer supports Python 2 and instead ships Python 3.
  4020. Closes #6678
  4021. - runtests.pl: kill processes locking test log files
  4022. Introduce a new runtests.pl command option: -rm
  4023. For now only required and implemented for Windows.
  4024. Ignore stunnel logs due to long running processes.
  4025. Requires Sysinternals handle[64].exe to be on PATH.
  4026. Reviewed-by: Jay Satiro
  4027. Ref: #6058
  4028. Closes #6179
  4029. - pathhelp.pm: fix use of pwd -L in Msys environment
  4030. While Msys2 has a pwd binary which supports -L,
  4031. Msys1 only has a shell built-in with that feature.
  4032. Reviewed-by: Jay Satiro
  4033. Part of #6179
  4034. Daniel Gustafsson (1 Mar 2021)
  4035. - ldap: use correct memory free function
  4036. unescaped is coming from Curl_urldecode and not a unicode conversion
  4037. function, so reclaiming its memory should be performed with a normal
  4038. call to free rather than curlx_unicodefree. In reality, this is the
  4039. same thing as curlx_unicodefree is implemented as a call to free but
  4040. that's not guaranteed to always hold. Using the curlx macro present
  4041. issues with memory debugging as well.
  4042. Closes #6671
  4043. Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
  4044. Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  4045. - url: fix typo in comment
  4046. Correct a small typo which snuck in with a304051620.
  4047. Jay Satiro (28 Feb 2021)
  4048. - tool_help: Increase space between option and description
  4049. - Increase the minimum number of spaces between the option and the
  4050. description from 1 to 2.
  4051. Before:
  4052. ~~~
  4053. -u, --user <user:password> Server user and password
  4054. -A, --user-agent <name> Send User-Agent <name> to server
  4055. -v, --verbose Make the operation more talkative
  4056. -V, --version Show version number and quit
  4057. -w, --write-out <format> Use output FORMAT after completion
  4058. --xattr Store metadata in extended file attributes
  4059. ~~~
  4060. After:
  4061. ~~~
  4062. -u, --user <user:password> Server user and password
  4063. -A, --user-agent <name> Send User-Agent <name> to server
  4064. -v, --verbose Make the operation more talkative
  4065. -V, --version Show version number and quit
  4066. -w, --write-out <format> Use output FORMAT after completion
  4067. --xattr Store metadata in extended file attributes
  4068. ~~~
  4069. Closes https://github.com/curl/curl/pull/6674
  4070. Daniel Stenberg (27 Feb 2021)
  4071. - curl: set CURLOPT_NEW_FILE_PERMS if requested
  4072. The --create-file-mode code logic accepted the value but never actually
  4073. passed it on to libcurl!
  4074. Follow-up to a7696c73436f (shipped in 7.75.0)
  4075. Reported-by: Johannes Lesr
  4076. Fixes #6657
  4077. Closes #6666
  4078. - tool_operate: check argc before accessing argv[1]
  4079. Follow-up to 09363500b
  4080. Reported-by: Emil Engler
  4081. Reviewed-by: Daniel Gustafsson
  4082. Closes #6668
  4083. Daniel Gustafsson (26 Feb 2021)
  4084. - [Jean-Philippe Menil brought this change]
  4085. openssl: remove get_ssl_version_txt in favor of SSL_get_version
  4086. openssl: use SSL_get_version to get connection protocol
  4087. Replace our bespoke get_ssl_version_txt in favor of SSL_get_version.
  4088. We can get rid of few lines of code, since SSL_get_version achieve
  4089. the exact same thing
  4090. Closes #6665
  4091. Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
  4092. Signed-off-by: Jean-Philippe Menil <jpmenil@gmail.com>
  4093. - gnutls: Fix nettle discovery
  4094. Commit e06fa7462ac258c removed support for libgcrypt leaving only
  4095. support for nettle which has been the default crypto library in
  4096. GnuTLS for a long time. There were however a few conditionals on
  4097. USE_GNUTLS_NETTLE which cause compilation errors in the metalink
  4098. code (as it used the gcrypt fallback instead as a result). See the
  4099. below autobuild for an example of the error:
  4100. https://curl.se/dev/log.cgi?id=20210225123226-30704#prob1
  4101. This removes all uses of USE_GNUTLS_NETTLE and also removes the
  4102. gcrypt support from the metalink code while at it.
  4103. Closes #6656
  4104. Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  4105. - cookies: Support multiple -b parameters
  4106. Previously only a single -b cookie parameter was supported with the last
  4107. one winning. This adds support for supplying multiple -b params to have
  4108. them serialized semicolon separated. Both cookiefiles and cookies can be
  4109. entered multiple times.
  4110. Closes #6649
  4111. Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  4112. Daniel Stenberg (25 Feb 2021)
  4113. - build: remove all traces of USE_BLOCKING_SOCKETS
  4114. libcurl doesn't behave properly with the define set
  4115. Closes #6655
  4116. - RELEASE-NOTES: synced
  4117. Daniel Gustafsson (25 Feb 2021)
  4118. - docs: Fix typos
  4119. Random typos spotted when skimming docs.
  4120. - cookies: Use named parameters in header prototypes
  4121. Align header with project style of using named parameters in the
  4122. function prototypes to aid readability and self-documentation.
  4123. Closes #6653
  4124. Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  4125. Daniel Stenberg (24 Feb 2021)
  4126. - urldata: make 'actions[]' use unsigned char instead of int
  4127. ... as it only needs a few bits per index anyway.
  4128. Reviewed-by: Daniel Gustafsson
  4129. Closes #6648
  4130. - configure: fail if --with-quiche is used and quiche isn't found
  4131. Closes #6652
  4132. - [Gregor Jasny brought this change]
  4133. cmake: use CMAKE_INSTALL_INCLUDEDIR indirection
  4134. Reviewed-by: Sergei Nikulov
  4135. Closes #6440
  4136. Viktor Szakats (23 Feb 2021)
  4137. - mingw: enable using strcasecmp()
  4138. This makes the 'Features:' list sorted case-insensitively,
  4139. bringing output in-line with *nix builds.
  4140. Reviewed-by: Jay Satiro
  4141. Closes #6644
  4142. - build: delete unused feature guards
  4143. - `HAVE_STRNCASECMP`
  4144. - `HAVE_TCGETATTR`
  4145. - `HAVE_TCSETATTR`
  4146. Reviewed-by: Jay Satiro
  4147. Reviewed-by: Daniel Stenberg
  4148. Closes #6645
  4149. Jay Satiro (23 Feb 2021)
  4150. - docs: add CURLOPT_CURLU to 'See also' in curl_url_ functions
  4151. Closes https://github.com/curl/curl/pull/6639
  4152. Daniel Stenberg (23 Feb 2021)
  4153. - [Jacob Hoffman-Andrews brought this change]
  4154. configure: make hyper opt-in, and fail if missing
  4155. Previously, configure would look for hyper by default, and use it if
  4156. found; otherwise it would not use hyper, and not error.
  4157. Now, configure will not look for hyper unless --with-hyper is passed. If
  4158. configure looks for hyper and fails, it will error.
  4159. Also, add -ld -lpthread -lm to Hyper's libs. I think they are required.
  4160. Closes #6598
  4161. - multi: do once-per-transfer inits in before_perform in DID state
  4162. ... since the state machine might go to RATELIMITING and then back to
  4163. PERFORMING doing once-per-transfer inits in that function is wrong and
  4164. it caused problems with receiving chunked HTTP and it set the
  4165. PRETRANSFER time much too often...
  4166. Regression from b68dc34af341805aeb7b3715 (shipped in 7.75.0)
  4167. Reported-by: Amaury Denoyelle
  4168. Fixes #6640
  4169. Closes #6641
  4170. - RELEASE-NOTES: synced
  4171. - CODE_STYLE.md: fix broken link to INTERNALS
  4172. ... the link would only work if browsed on GitHub, while this link now
  4173. takes the user to the website instead and thus should work on either.
  4174. Reported-by: David Demelier
  4175. - curl_url_set.3: mention CURLU_PATH_AS_IS
  4176. ... it has been supported since the URL API was added.
  4177. Bug: https://curl.se/mail/lib-2021-02/0046.html
  4178. Closes #6638
  4179. Viktor Szakats (21 Feb 2021)
  4180. - time: enable 64-bit time_t in supported mingw environments
  4181. (Unless 32-bit `time_t` is selected manually via the `_USE_32BIT_TIME_T`
  4182. mingw macro.)
  4183. Previously, 64-bit `time_t` was enabled on VS2005 and newer only, and
  4184. 32-bit `time_t` was used on all other Windows builds.
  4185. Assisted-by: Jay Satiro
  4186. Closes #6636
  4187. Jay Satiro (20 Feb 2021)
  4188. - test1188: Check for --fail HTTP status
  4189. - Change the test to check for curl error on HTTP 404 Not Found.
  4190. test1188 tests "--write-out with %{onerror} and %{urlnum} to stderr".
  4191. Prior to this change it did that by specifying a non-existent host which
  4192. would cause an error. ISPs may hijack DNS and resolve non-existent hosts
  4193. so the test would not work if that was the case.
  4194. Ref: https://en.wikipedia.org/wiki/DNS_hijacking#Manipulation_by_ISPs
  4195. Ref: https://github.com/curl/curl/issues/6621
  4196. Ref: https://github.com/curl/curl/pull/6623
  4197. Closes https://github.com/curl/curl/pull/6637
  4198. - memdebug: close debug logfile explicitly on exit
  4199. - Use atexit to register a dbg cleanup function that closes the logfile.
  4200. LeakSantizier (LSAN) calls _exit() instead of exit() when a leak is
  4201. detected on exit so the logfile must be closed explicitly or data could
  4202. be lost. Though _exit() does not call atexit handlers such as this,
  4203. LSAN's call to _exit() comes after the atexit handlers are called.
  4204. Prior to this change the logfile was not explicitly closed so it was
  4205. possible that if LSAN detected a leak and called _exit (which does
  4206. not flush or close files like exit) then the logfile could be missing
  4207. data. That could then cause curl's memanalyze to report false leaks
  4208. (eg a malloc was recorded to the logfile but the corresponding free was
  4209. discarded from the buffer instead of written to the logfile, then
  4210. memanalyze reports that as a leak).
  4211. Ref: https://github.com/google/sanitizers/issues/1374
  4212. Bug: https://github.com/curl/curl/pull/6591#issuecomment-780396541
  4213. Closes https://github.com/curl/curl/pull/6620
  4214. - curl_multibyte: always return a heap-allocated copy of string
  4215. - Change the Windows char <-> UTF-8 conversion functions to return an
  4216. allocated copy of the passed in string instead of the original.
  4217. Prior to this change the curlx_convert_ functions would, as what I
  4218. assume was an optimization, not make a copy of the passed in string if
  4219. no conversion was required. No conversion is required in non-UNICODE
  4220. Windows builds since our tchar strings are type char and remain in
  4221. whatever the passed in encoding is, which is assumed to be UTF-8 but may
  4222. be other encoding.
  4223. In contrast the UNICODE Windows builds require conversion
  4224. (wchar <-> char) and do return a copy. That inconsistency could lead to
  4225. programming errors where the developer expects a copy, and does not
  4226. realize that won't happen in all cases.
  4227. Closes https://github.com/curl/curl/pull/6602
  4228. Viktor Szakats (19 Feb 2021)
  4229. - http: add new files missed from referrer commit
  4230. Ref: 44872aefc2d54f297caf2b0cc887df321bc9d791
  4231. Ref: #6591
  4232. - http: add support to read and store the referrer header
  4233. - add CURLINFO_REFERER libcurl option
  4234. - add --write-out '%{referer}' command-line option
  4235. - extend --xattr command-line option to fill user.xdg.referrer.url extended
  4236. attribute with the referrer (if there was any)
  4237. Closes #6591
  4238. Daniel Stenberg (19 Feb 2021)
  4239. - urldata: remove the _ORIG suffix from string names
  4240. It doesn't provide any useful info but only makes the names longer.
  4241. Closes #6624
  4242. - url: fix memory leak if OOM in the HSTS handling
  4243. Reported-by: Viktor Szakats
  4244. Bug: https://github.com/curl/curl/pull/6627#issuecomment-781626205
  4245. Closes #6628
  4246. - gnutls: assume nettle crypto support
  4247. nettle has been the default crypto library with GnuTLS since 2010. By
  4248. dropping support for the previous libcrypto, we simplify code.
  4249. Closes #6625
  4250. - asyn-ares: use consistent resolve error message
  4251. ... with the help of Curl_resolver_error() which now is moved from
  4252. asyn-thead.c and is provided globally for this purpose.
  4253. Follow-up to 35ca04ce1b77636
  4254. Makes test 1188 work for c-ares builds
  4255. Closes #6626
  4256. Viktor Szakats (18 Feb 2021)
  4257. - ci: stop building on freebsd-12-1
  4258. An updated freebsd-12-2 image was added a few months ago, and this
  4259. older one is consistently failing to go past `pkginstall`:
  4260. ```
  4261. Newer FreeBSD version for package py37-mlt:
  4262. To ignore this error set IGNORE_OSVERSION=yes
  4263. - package: 1202000
  4264. - running kernel: 1201000
  4265. Ignore the mismatch and continue? [Y/n]: pkg: repository FreeBSD contains packages for wrong OS version: FreeBSD:12:amd64
  4266. ```
  4267. FreeBSD thread suggests that 12.1 is EOL, and best to avoid.
  4268. Ref: https://forums.freebsd.org/threads/78856/
  4269. Reviewed-by: Daniel Stenberg
  4270. Closes #6622
  4271. Daniel Stenberg (18 Feb 2021)
  4272. - test1188: change error from connect to resolve error
  4273. Using the %NOLISTENPORT to trigger a connection failure is somewhat
  4274. "risky" (since it isn't guaranteed to not be listened to) and caused
  4275. occasional CI problems. This fix changes the infused error to be a more
  4276. reliable one but still verifies the --write-out functionality properly -
  4277. which is the purpose of this test.
  4278. Reported-by: Jay Satiro
  4279. Fixes #6621
  4280. Closes #6623
  4281. - url.c: use consistent error message for failed resolve
  4282. - BUGS: language polish
  4283. - wolfssl: don't store a NULL sessionid
  4284. This caused a memory leak as the session id cache entry was still
  4285. erroneously stored with a NULL sessionid and that would later be treated
  4286. as not needed to get freed.
  4287. Reported-by: Gisle Vanem
  4288. Fixes #6616
  4289. Closes #6617
  4290. - parse_proxy: fix a memory leak in the OOM path
  4291. Reported-by: Jay Satiro
  4292. Reviewed-by: Jay Satiro
  4293. Reviewed-by: Emil Engler
  4294. Closes #6614
  4295. Bug: https://github.com/curl/curl/pull/6591#issuecomment-780396541
  4296. Jay Satiro (17 Feb 2021)
  4297. - url: fix possible use-after-free in default protocol
  4298. Prior to this change if the user specified a default protocol and a
  4299. separately allocated non-absolute URL was used then it was freed
  4300. prematurely, before it was then used to make the replacement URL.
  4301. Bug: https://github.com/curl/curl/issues/6604#issuecomment-780138219
  4302. Reported-by: arvids-kokins-bidstack@users.noreply.github.com
  4303. Closes https://github.com/curl/curl/pull/6613
  4304. Daniel Stenberg (16 Feb 2021)
  4305. - multi: rename the multi transfer states
  4306. While working on documenting the states it dawned on me that step one is
  4307. to use more descriptive names on the states. This also changes prefix on
  4308. the states to make them shorter in the source.
  4309. State names NOT ending with *ing are transitional ones.
  4310. Closes #6612
  4311. Viktor Szakats (16 Feb 2021)
  4312. - http: do not add a referrer header with empty value
  4313. Previously an empty 'Referer:' header was added to the HTTP request when
  4314. passing `--referer ';auto'` or `--referer ''` on the command-line. This
  4315. patch makes `--referer` work like `--header 'Referer:'` and will only add
  4316. the header if it has a non-zero length value.
  4317. Reviewed-by: Jay Satiro
  4318. Closes #6610
  4319. Daniel Stenberg (16 Feb 2021)
  4320. - lib: remove 'conn->data' completely
  4321. The Curl_easy pointer struct entry in connectdata is now gone. Just
  4322. before commit 215db086e0 landed on January 8, 2021 there were 919
  4323. references to conn->data.
  4324. Closes #6608
  4325. - openldap: pass 'data' to the callbacks instead of 'conn'
  4326. Jay Satiro (15 Feb 2021)
  4327. - doh: Fix sharing user's resolve list with DOH handles
  4328. - Share the shared object from the user's easy handle with the DOH
  4329. handles.
  4330. Prior to this change if the user had set a shared object with shared
  4331. cached DNS (CURL_LOCK_DATA_DNS) for their easy handle then that wasn't
  4332. used by any associated DOH handles, since they used the multi's default
  4333. hostcache.
  4334. This change means all the handles now use the same hostcache, which is
  4335. either the shared hostcache from the user created shared object if it
  4336. exists or if not then the multi's default hostcache.
  4337. Reported-by: Manuj Bhatia
  4338. Fixes https://github.com/curl/curl/issues/6589
  4339. Closes https://github.com/curl/curl/pull/6607
  4340. Daniel Stenberg (15 Feb 2021)
  4341. - http2: remove conn->data use
  4342. ... but instead use a private alternative that points to the "driving
  4343. transfer" from the connection. We set the "user data" associated with
  4344. the connection to be the connectdata struct, but when we drive transfers
  4345. the code still needs to know the pointer to the transfer. We can change
  4346. the user data to become the Curl_easy handle, but with older nghttp2
  4347. version we cannot dynamically update that pointer properly when
  4348. different transfers are used over the same connection.
  4349. Closes #6520
  4350. - openssl: remove conn->data use
  4351. We still make the trace callback function get the connectdata struct
  4352. passed to it, since the callback is anchored on the connection.
  4353. Repeatedly updating the callback pointer to set 'data' with
  4354. SSL_CTX_set_msg_callback_arg() doesn't seem to work, probably because
  4355. there might already be messages in the queue with the old pointer.
  4356. This code therefore makes sure to set the "logger" handle before using
  4357. OpenSSL calls so that the right easy handle gets used for tracing.
  4358. Closes #6522
  4359. - RELEASE-NOTES: synced
  4360. Jay Satiro (14 Feb 2021)
  4361. - doh: add options to disable ssl verification
  4362. - New libcurl options CURLOPT_DOH_SSL_VERIFYHOST,
  4363. CURLOPT_DOH_SSL_VERIFYPEER and CURLOPT_DOH_SSL_VERIFYSTATUS do the
  4364. same as their respective counterparts.
  4365. - New curl tool options --doh-insecure and --doh-cert-status do the same
  4366. as their respective counterparts.
  4367. Prior to this change DOH SSL certificate verification settings for
  4368. verifyhost and verifypeer were supposed to be inherited respectively
  4369. from CURLOPT_SSL_VERIFYHOST and CURLOPT_SSL_VERIFYPEER, but due to a bug
  4370. were not. As a result DOH verification remained at the default, ie
  4371. enabled, and it was not possible to disable. This commit changes
  4372. behavior so that the DOH verification settings are independent and not
  4373. inherited.
  4374. Ref: https://github.com/curl/curl/pull/4579#issuecomment-554723676
  4375. Fixes https://github.com/curl/curl/issues/4578
  4376. Closes https://github.com/curl/curl/pull/6597
  4377. - hostip: fix crash in sync resolver builds that use DOH
  4378. - Guard some Curl_async accesses with USE_CURL_ASYNC instead of
  4379. !CURLRES_SYNCH.
  4380. This is another follow-up to 8335c64 which moved the async struct from
  4381. the connectdata struct into the Curl_easy struct. A previous follow-up
  4382. 6cd167a fixed building for sync resolver by guarding some async struct
  4383. accesses with !CURLRES_SYNCH. The problem is since DOH (DNS-over-HTTPS)
  4384. is available as an asynchronous secondary resolver the async struct may
  4385. be used even when libcurl is built for the sync resolver. That means
  4386. that CURLRES_SYNCH and USE_CURL_ASYNC may be defined at the same time.
  4387. Closes https://github.com/curl/curl/pull/6603
  4388. Daniel Stenberg (13 Feb 2021)
  4389. - KNOWN_BUGS: cannot enable LDAPS on Windows with cmake
  4390. Reported-by: Jack Boos Yu
  4391. Closes #6284
  4392. - KNOWN_BUGS: Excessive HTTP/2 packets with TCP_NODELAY
  4393. Reported-by: Alex Xu
  4394. Closes #6363
  4395. - http: use credentials from transfer, not connection
  4396. HTTP auth "accidentally" worked before this cleanup since the code would
  4397. always overwrite the connection credentials with the credentials from
  4398. the most recent transfer and since HTTP auth is typically done first
  4399. thing, this has not been an issue. It was still wrong and subject to
  4400. possible race conditions or future breakage if the sequence of functions
  4401. would change.
  4402. The data.set.str[] strings MUST remain unmodified exactly as set by the
  4403. user, and the credentials to use internally are instead set/updated in
  4404. state.aptr.*
  4405. Added test 675 to verify different credentials used in two requests done
  4406. over a reused HTTP connection, which previously behaved wrongly.
  4407. Fixes #6542
  4408. Closes #6545
  4409. - test433: clear some home dir env variables
  4410. Follow-up to bd6b54ba1f55b5
  4411. ... so that XDG_CONFIG_HOME is the only home dir variable set and thus
  4412. used correctly in the test!
  4413. Fixes #6599
  4414. Closes #6600
  4415. - RELEASE-NOTES: synced
  4416. bumped the version to 7.76.0
  4417. - travis: install libgsasl-dev to add that to the builds
  4418. Closes #6588
  4419. - urldata: don't touch data->set.httpversion at run-time
  4420. Rename it to 'httpwant' and make a cloned field in the state struct as
  4421. well for run-time updates.
  4422. Also: refuse non-supported HTTP versions. Verified with test 129.
  4423. Closes #6585
  4424. Viktor Szakats (11 Feb 2021)
  4425. - tests: disable .curlrc in more environments
  4426. by also setting CURL_HOME and XDG_CONFIG_HOME envvars to the local
  4427. directory.
  4428. Reviewed-by: Daniel Stenberg
  4429. Fixes #6595
  4430. Closes #6596
  4431. - docs/Makefile.inc: format to be update-friendly
  4432. - one source file per line
  4433. - convert tabs to spaces
  4434. - do not align line-continuation backslashes
  4435. - sort source files alphabetically
  4436. Reviewed-by: Daniel Stenberg
  4437. Closes #6593
  4438. Daniel Stenberg (11 Feb 2021)
  4439. - curl: provide libgsasl version and feature info in -V output
  4440. Closes #6592
  4441. - gsasl: provide CURL_VERSION_GSASL if built-in
  4442. To let applications know the feature is available.
  4443. Closes #6592
  4444. - curl: add --fail-with-body
  4445. Prevent both --fail and --fail-with-body on the same command line.
  4446. Verify with test 349, 360 and 361.
  4447. Closes #6449
  4448. - TODO: remove HSTS
  4449. Provided now since commit 7385610d0c74
  4450. Jay Satiro (10 Feb 2021)
  4451. - tests: Fix tests failing due to change in curl --help
  4452. Follow-up to parent 3183217 which added add missing <mode> argument to
  4453. --create-file-mode <mode>.
  4454. Ref: https://github.com/curl/curl/issues/6590
  4455. - tool_help: add missing argument for --create-file-mode
  4456. Prior to this change the required argument was not shown in curl --help.
  4457. before:
  4458. --create-file-mode File mode for created files
  4459. after:
  4460. --create-file-mode <mode> File mode (octal) for created files
  4461. Reported-by: ZimCodes@users.noreply.github.com
  4462. Fixes https://github.com/curl/curl/issues/6590
  4463. - create-file-mode.d: add missing Arg tag
  4464. Prior to this change the required argument was not shown.
  4465. curl.1 before: --create-file-mode
  4466. curl.1 after: --create-file-mode <mode>
  4467. Reported-by: ZimCodes@users.noreply.github.com
  4468. Fixes https://github.com/curl/curl/issues/6590
  4469. Viktor Szakats (10 Feb 2021)
  4470. - gsasl: fix errors/warnings building against libgsasl
  4471. - also fix an indentation
  4472. - make Curl_auth_gsasl_token() use CURLcode (by Daniel Stenberg)
  4473. Ref: https://github.com/curl/curl/pull/6372#issuecomment-776118711
  4474. Ref: https://github.com/curl/curl/pull/6588
  4475. Reviewed-by: Jay Satiro
  4476. Assisted-by: Daniel Stenberg
  4477. Reviewed-by: Simon Josefsson
  4478. Closes #6587
  4479. - Makefile.m32: add support for libgsasl dependency
  4480. Reviewed-by: Marcel Raad
  4481. Closes #6586
  4482. Marcel Raad (10 Feb 2021)
  4483. - ngtcp2: clarify calculation precedence
  4484. As suggested by Codacy/cppcheck.
  4485. Closes https://github.com/curl/curl/pull/6576
  4486. - server: remove redundant condition
  4487. `end` is always non-null here.
  4488. Closes https://github.com/curl/curl/pull/6576
  4489. - lib: remove redundant code
  4490. Closes https://github.com/curl/curl/pull/6576
  4491. - mqttd: remove unused variable
  4492. Closes https://github.com/curl/curl/pull/6576
  4493. - tool_paramhlp: reduce variable scope
  4494. Closes https://github.com/curl/curl/pull/6576
  4495. - tests: reduce variable scopes
  4496. Closes https://github.com/curl/curl/pull/6576
  4497. - lib: reduce variable scopes
  4498. Closes https://github.com/curl/curl/pull/6576
  4499. - ftp: fix Codacy/cppcheck warning about null pointer arithmetic
  4500. Increment `bytes` only if it is non-null.
  4501. Closes https://github.com/curl/curl/pull/6576
  4502. Daniel Stenberg (9 Feb 2021)
  4503. - ngtcp2: adapt to the new recv_datagram callback
  4504. - quiche: fix build error: use 'int' for port number
  4505. Follow-up to cb2dc1ba8
  4506. - ftp: add 'list_only' to the transfer state struct
  4507. and rename it from 'ftp_list_only' since it is also used for SSH and
  4508. POP3. The state is updated internally for 'type=D' FTP URLs.
  4509. Added test case 1570 to verify.
  4510. Closes #6578
  4511. - ftp: add 'prefer_ascii' to the transfer state struct
  4512. ... and make sure the code never updates 'set.prefer_ascii' as it breaks
  4513. handle reuse which should use the setting as the user specified it.
  4514. Added test 1569 to verify: it first makes an FTP transfer with ';type=A'
  4515. and then another without type on the same handle and the second should
  4516. then use binary. Previously, curl failed this.
  4517. Closes #6578
  4518. - RELEASE-NOTES: synced
  4519. - [Jacob Hoffman-Andrews brought this change]
  4520. vtls: initial implementation of rustls backend
  4521. This adds a new TLS backend, rustls. It uses the C-to-rustls bindings
  4522. from https://github.com/abetterinternet/crustls.
  4523. Rustls is at https://github.com/ctz/rustls/.
  4524. There is still a fair bit to be done, like sending CloseNotify on
  4525. connection shutdown, respecting CAPATH, and properly indicating features
  4526. like "supports TLS 1.3 ciphersuites." But it works well enough to make
  4527. requests and receive responses.
  4528. Blog post for context:
  4529. https://www.abetterinternet.org/post/memory-safe-curl/
  4530. Closes #6350
  4531. - [Simon Josefsson brought this change]
  4532. sasl: support SCRAM-SHA-1 and SCRAM-SHA-256 via libgsasl
  4533. Closes #6372
  4534. Jay Satiro (9 Feb 2021)
  4535. - lib: use int type for more port variables
  4536. This is a follow-up to 764c6bd. Prior to that change port variables
  4537. were usually type long.
  4538. Closes https://github.com/curl/curl/pull/6553
  4539. - tool_writeout: refactor write-out and write-out json
  4540. - Deduplicate the logic used by write-out and write-out json.
  4541. Rather than have separate writeLong, writeString, etc, logic for
  4542. each of write-out and write-out json instead have respective shared
  4543. functions that can output either format and a 'use_json' parameter to
  4544. indicate whether it is json that is output.
  4545. This will make it easier to maintain. Rather than have to go through
  4546. two sets of logic now we only have to go through one.
  4547. - Support write-out %{errormsg} and %{exitcode} in json.
  4548. - Clarify in the doc that %{exitcode} is the exit code of the transfer.
  4549. Prior to this change it just said "The numerical exitcode" which
  4550. implies it's the exit code of the tool, and it's not necessarily that.
  4551. Closes https://github.com/curl/curl/pull/6544
  4552. - lib: drop USE_SOCKETPAIR in favor of CURL_DISABLE_SOCKETPAIR
  4553. .. since the former is undocumented and they both do the same thing.
  4554. Closes https://github.com/curl/curl/pull/6517
  4555. - curl_multibyte: fall back to local code page stat/access on Windows
  4556. If libcurl is built with Unicode support for Windows then it is assumed
  4557. the filename string is Unicode in UTF-8 encoding and it is converted to
  4558. UTF-16 to be passed to the wide character version of the respective
  4559. function (eg wstat). However the filename string may actually be in the
  4560. local encoding so, even if it successfully converted to UTF-16, if it
  4561. could not be stat/accessed then try again using the local code page
  4562. version of the function (eg wstat fails try stat).
  4563. We already do this with fopen (ie wfopen fails try fopen), so I think it
  4564. makes sense to extend it to stat and access functions.
  4565. Closes https://github.com/curl/curl/pull/6514
  4566. - [Stephan Szabo brought this change]
  4567. file: Support unicode urls on windows
  4568. Closes https://github.com/curl/curl/pull/6501
  4569. - [Vincent Torri brought this change]
  4570. cmake: fix import library name for non-MS compiler on Windows
  4571. - Use _imp.lib suffix only for Microsoft's compiler (MSVC).
  4572. Prior to this change library suffix _imp.lib was used for the import
  4573. library on Windows regardless of compiler.
  4574. With this change the other compilers should now use their default
  4575. suffix which should be .dll.a.
  4576. This change is motivated by the usage of pkg-config on MSYS2.
  4577. Indeed, when 'pkg-config --libs libcurl' is used, -lcurl is
  4578. passed to ld. The documentation of ld on Windows :
  4579. https://sourceware.org/binutils/docs/ld/WIN32.html
  4580. lists, in the 'direct linking to a dll' section, the pattern
  4581. of the searched import library, and libcurl_imp.lib is not there.
  4582. Closes https://github.com/curl/curl/pull/6225
  4583. Daniel Stenberg (9 Feb 2021)
  4584. - urldata: move 'followlocation' to UrlState
  4585. As this is a state variable it does not belong in UserDefined which is
  4586. used to store values set by the user.
  4587. Closes #6582
  4588. - [Ikko Ashimine brought this change]
  4589. http_proxy: fix typo in http_proxy.c
  4590. settting -> setting
  4591. Closes #6583
  4592. - [Fabian Keil brought this change]
  4593. tests/server: Bump MAX_TAG_LEN to 200
  4594. This is useful for tests containing HTML inside of <data> sections.
  4595. For <img> tags it's not uncommon to be longer than the previous
  4596. limit of 79 bytes.
  4597. An example of a previously problem-causing tag is:
  4598. <img src="http://config.privoxy.org/send-banner?type=auto" border="0" title="Killed-http://www.privoxy.org/images/privoxy.png-by-size" width="88" height="31">
  4599. which is needed for a Privoxy test for the banners-by-size filter.
  4600. Previously it caused server failures like:
  4601. 12:29:05.786961 ====> Client connect
  4602. 12:29:05.787116 accept_connection 3 returned 4
  4603. 12:29:05.787194 accept_connection 3 returned 0
  4604. 12:29:05.787285 Read 119 bytes
  4605. 12:29:05.787345 Process 119 bytes request
  4606. 12:29:05.787407 Got request: GET /banners-by-size/9 HTTP/1.1
  4607. 12:29:05.787464 Requested test number 9 part 0
  4608. 12:29:05.787686 getpart() failed with error: -2
  4609. 12:29:05.787744 - request found to be complete (9)
  4610. 12:29:05.787912 getpart() failed with error: -2
  4611. 12:29:05.788048 Wrote request (119 bytes) input to log/server.input
  4612. 12:29:05.788157 Send response test9 section <data>
  4613. 12:29:05.788443 getpart() failed with error: -2
  4614. 12:29:05.788498 instructed to close connection after server-reply
  4615. 12:29:05.788550 ====> Client disconnect 0
  4616. 12:29:05.871448 exit_signal_handler: 15
  4617. 12:29:05.871714 signalled to die
  4618. 12:29:05.872040 ========> IPv4 sws (port 21108 pid: 51758) exits with signal (15)
  4619. - [Fabian Keil brought this change]
  4620. tests/badsymbols.pl: when opening '$incdir' fails include it in the error message
  4621. - [Fabian Keil brought this change]
  4622. runtests.1: document -o, -P, -L, and -E
  4623. - [Fabian Keil brought this change]
  4624. runtests.pl: add %TESTNUMBER variable to make copying tests more convenient
  4625. - [Fabian Keil brought this change]
  4626. runtests.pl: add an -o option to change internal variables
  4627. runtests.pl has lots of internal variables one might want to
  4628. change in certain situations, but adding a dedicated option
  4629. for every single one of them isn't practical.
  4630. Usage:
  4631. ./runtests.pl -o TESTDIR=$privoxy_curl_test_dir -o HOSTIP=10.0.0.1 ...
  4632. - [Fabian Keil brought this change]
  4633. runtests.pl: cleanups
  4634. - show the summarized test result in the last line of the report
  4635. - do not use $_ after mapping it to a named variable
  4636. Doing that makes the code harder to follow.
  4637. - log the restraints sorted by the number of their occurrences
  4638. - fix language when logging restraints that only occured once
  4639. - let runhttpserver() use $TESTDIR instead of $srcdir
  4640. ... so it works if a non-default $TESTDIR is being used.
  4641. - [Fabian Keil brought this change]
  4642. runtests.pl: add an -E option to specify an exclude file
  4643. It can contain additional restraints for test numbers,
  4644. keywords and tools.
  4645. The idea is to let third parties like the Privoxy project
  4646. distribute an exclude file with their tarballs that specifies
  4647. which curl tests are not expected to work when using Privoxy
  4648. as a proxy, without having to fork the whole curl test suite.
  4649. The syntax could be changed to be extendable and maybe
  4650. more closely reflect the "curl test" syntax. Currently
  4651. it's a bunch of lines like these:
  4652. test:$TESTNUMBER:Reason why this test with number $TESTNUMBER should be skipped
  4653. keyword:$KEYWORD:Reason why tests whose keywords contain the $KEYWORD should be skipped
  4654. tool:$TOOL:Reason why tests with tools that contain $TOOL should be skipped
  4655. To specify multiple $TESTNUMBERs, $KEYWORDs and $TOOLs
  4656. on a single line, split them with commas.
  4657. - [Fabian Keil brought this change]
  4658. runtests.pl: add -L parameter to require additional perl libraries
  4659. This is useful to change the behaviour of the script without
  4660. having to modify the file itself, for example to use a custom
  4661. compareparts() function that ignores header differences that
  4662. are expected to occur when an external proxy is being used.
  4663. Such differences are proxy-specific and thus the modifications
  4664. should be maintained together with the proxy.
  4665. - [Fabian Keil brought this change]
  4666. runtests.pl: add a -P option to specify an external proxy
  4667. ... that should be used when executing the tests.
  4668. The assumption is that the proxy is an HTTP proxy.
  4669. This option should be used together with -L to provide
  4670. a customized compareparts() version that knows which
  4671. proxy-specific header differences should be ignored.
  4672. This option doesn't work for all test types yet.
  4673. - [Fabian Keil brought this change]
  4674. tests: fixup several tests
  4675. missing CRs and modified %hostip
  4676. lib556/test556: use a real HTTP version to make test reuse more convenient
  4677. make sure the weekday in Date headers matches the date
  4678. test61: replace stray "^M" (5e 4d) at the end of a cookie with a '^M' (0d)
  4679. Gets the test working with external proxies like Privoxy again.
  4680. Closes #6463
  4681. - ftp: never set data->set.ftp_append outside setopt
  4682. Since the set value then risks getting used like that when the easy
  4683. handle is reused by the application.
  4684. Also: renamed the struct field from 'ftp_append' to 'remote_append'
  4685. since it is also used for SSH protocols.
  4686. Closes #6579
  4687. - urldata: remove the 'rtspversion' field
  4688. from struct connectdata and the corresponding code in http.c that set
  4689. it. It was never used for anything!
  4690. Closes #6581
  4691. - CURLOPT_QUOTE.3: clarify that libcurl doesn't parse what's sent
  4692. ... so passed in commands may confuse libcurl's knowledge of state.
  4693. Reported-by: Bodo Bergmann
  4694. Fixes #6577
  4695. Closes #6580
  4696. - [Jacob Hoffman-Andrews brought this change]
  4697. vtls: factor out Curl_ssl_getsock to field of Curl_ssl
  4698. Closes #6558
  4699. - RELEASE-PROCEDURE: remove old release dates, add new
  4700. - docs/SSL-PROBLEMS: enhanced
  4701. Elaborate on the intermediate cert issue, and mention that anything
  4702. below TLS 1.2 is generally considered insecure these days.
  4703. Closes #6572
  4704. - THANKS: remove a Jon Rumsey dupe
  4705. Daniel Gustafsson (5 Feb 2021)
  4706. - [nimaje brought this change]
  4707. docs: fix FILE example url in --metalink documentation
  4708. In a url after <scheme>:// follows the possibly empty authority part
  4709. till the next /, so that url missed a /.
  4710. Closes #6573
  4711. Reviewed-by: Daniel Stenberg <daniel@haxx.se>
  4712. Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
  4713. Daniel Stenberg (5 Feb 2021)
  4714. - hostip: fix build with sync resolver
  4715. Reported-by: David Goerger
  4716. Follow-up from 8335c6417
  4717. Fixes #6566
  4718. Closes #6568
  4719. - mailmap: Jon Rumsey
  4720. - [Jon Rumsey brought this change]
  4721. gskit: correct the gskit_send() prototype
  4722. gskit_send() first paramater is a pointer to Curl_easy not connectdata
  4723. struct.
  4724. Closes #6570
  4725. Fixes #6569
  4726. - urldata: fix build without HTTP and MQTT
  4727. Reported-by: Joseph Chen
  4728. Fixes #6562
  4729. Closes #6563
  4730. - ftp: avoid SIZE when asking for a TYPE A file
  4731. ... as we ignore it anyway because servers don't report the correct size
  4732. and proftpd even blatantly returns a 550.
  4733. Updates a set of tests accordingly.
  4734. Reported-by: awesomenode on github
  4735. Fixes #6564
  4736. Closes #6565
  4737. - pingpong: rename the curl_pp_transfer enum to use PP prefix
  4738. Using an FTP prefix for PP provided functionality was misleading.
  4739. - RELEASE-NOTES: synced
  4740. ... and bump pending version to 7.75.1 (for now)
  4741. Jay Satiro (4 Feb 2021)
  4742. - build: fix --disable-http-auth
  4743. Broken since 215db08 (precedes 7.75.0).
  4744. Reported-by: Benbuck Nason
  4745. Fixes https://github.com/curl/curl/issues/6567
  4746. - build: fix --disable-dateparse
  4747. Broken since 215db08 (precedes 7.75.0).
  4748. Bug: https://curl.se/mail/lib-2021-02/0008.html
  4749. Reported-by: Firefox OS
  4750. Daniel Stenberg (4 Feb 2021)
  4751. - [Jon Rumsey brought this change]
  4752. OS400: update for CURLOPT_AWS_SIGV4
  4753. chkstrings fails because a new string option that could require codepage
  4754. conversion has been added.
  4755. Closes #6561
  4756. Fixes #6560
  4757. - BUG-BOUNTY: removed the cooperation mention
  4758. Version 7.75.0 (3 Feb 2021)
  4759. Daniel Stenberg (3 Feb 2021)
  4760. - RELEASE-NOTES: synced
  4761. - THANKS: added contributors from 7.75.0
  4762. - copyright: fix year ranges in need of updates
  4763. - TODO: remove items for next SONAME bump etc
  4764. We want to avoid that completely, so we don't plan for things after such
  4765. an event.
  4766. - [Jay Satiro brought this change]
  4767. ngtcp2: Fix build error due to change in ngtcp2_settings
  4768. - Separate ngtcp2_transport_params.
  4769. ngtcp2/ngtcp2@05d7adc made ngtcp2_transport_params separate from
  4770. ngtcp2_settings.
  4771. ngtcp2 master is required to build curl with http3 support.
  4772. Closes #6554
  4773. - vtls: remove md5sum
  4774. As it is not used anymore.
  4775. Reported-by: Jacob Hoffman-Andrews
  4776. Bug: https://curl.se/mail/lib-2021-02/0000.html
  4777. Closes #6557
  4778. - [Alessandro Ghedini brought this change]
  4779. quiche: don't use primary_ip / primary_port
  4780. Closes #6555
  4781. Alessandro Ghedini (1 Feb 2021)
  4782. - travis: enable quiche's FFI feature
  4783. Daniel Stenberg (30 Jan 2021)
  4784. - [Dmitry Wagin brought this change]
  4785. http: improve AWS HTTP v4 Signature auth
  4786. - Add support services without region and service prefixes in
  4787. the URL endpoint (ex. Min.IO, GCP, Yandex Cloud, Mail.Ru Cloud Solutions, etc)
  4788. by providing region and service parameters via aws-sigv4 option.
  4789. - Add [:region[:service]] suffix to aws-sigv4 option;
  4790. - Fix memory allocation errors.
  4791. - Refactor memory management.
  4792. - Use Curl_http_method instead() STRING_CUSTOMREQUEST.
  4793. - Refactor canonical headers generating.
  4794. - Remove repeated sha256_to_hex() usage.
  4795. - Add some docs fixes.
  4796. - Add some codestyle fixes.
  4797. - Add overloaded strndup() for debug - curl_dbg_strndup().
  4798. - Update tests.
  4799. Closes #6524
  4800. - hyper: fix CONNECT to set 'data' as userdata
  4801. Follow-up to 14e075d1a7fd
  4802. - [Layla brought this change]
  4803. connect: fix compile errors in `Curl_conninfo_local`
  4804. .. for the `#else` (`!HAVE_GETSOCKNAME`) case
  4805. Fixes https://github.com/curl/curl/issues/6548
  4806. Closes #6549
  4807. Signed-off-by: Layla <layla@insightfulvr.com>
  4808. - [Michał Antoniak brought this change]
  4809. transfer: fix GCC 10 warning with flag '-Wint-in-bool-context'
  4810. ... and return the error code from the Curl_mime_rewind call.
  4811. Closes #6537
  4812. - [Michał Antoniak brought this change]
  4813. avoid warning: enum constant in boolean context
  4814. - copyright: fix missing year (range) updates
  4815. - RELEASE-NOTES: synced
  4816. - openssl: lowercase the hostname before using it for SNI
  4817. ... because it turns out several servers out there don't actually behave
  4818. correctly otherwise in spite of the fact that the SNI field is
  4819. specifically said to be case insensitive in RFC 6066 section 3.
  4820. Reported-by: David Earl
  4821. Fixes #6540
  4822. Closes #6543
  4823. - KNOWN_BUGS: cmake: ExternalProject_Add does not set CURL_CA_PATH
  4824. Closes #6313
  4825. - KNOWN_BUGS: Multi perform hangs waiting for threaded resolver
  4826. Closes #4852
  4827. - KNOWN_BUGS: "pulseUI VPN client" is known to be buggy
  4828. First entry in the new section "applications" for known problems in
  4829. libcurl using applications.
  4830. Closes #6306
  4831. - tool_writeout: make %{errormsg} blank for no errors
  4832. Closes #6539
  4833. Jay Satiro (27 Jan 2021)
  4834. - [Gisle Vanem brought this change]
  4835. build: fix djgpp builds
  4836. - Update build instructions in packages/DOS/README
  4837. - Extend 'VPATH' with 'vquic' and 'vssh'.
  4838. - Allow 'Makefile.dist' to build both 'lib' and 'src'.
  4839. - Allow using the Windows hosted djgpp cross compiler to build for MSDOS
  4840. under Windows.
  4841. - 'USE_SSL' -> 'USE_OPENSSL'
  4842. - Added a 'link_EXE' macro. Etc, etc.
  4843. - Linking 'curl.exe' needs '$(CURLX_CFILES)' too.
  4844. - Do not pick-up '../lib/djgpp/*.o' files. Recompile locally.
  4845. - Generate a gzipped 'tool_hugehelp.c' if 'USE_ZLIB=1'.
  4846. - Remove 'djgpp-clean'
  4847. - Adapt to new C-ares directory structure
  4848. - Use conditional variable assignments
  4849. Clarify the 'conditional variable assignment' in 'common.dj'.
  4850. Closes https://github.com/curl/curl/pull/6382
  4851. Daniel Stenberg (27 Jan 2021)
  4852. - [Ikko Ashimine brought this change]
  4853. hyper: fix typo in c-hyper.c
  4854. settting -> setting
  4855. Closes #6538
  4856. - libssh2: fix CURL_LIBSSH2_DEBUG-enabled build
  4857. Follow-up to 2dcc940959772a
  4858. Reported-by: Gisle Vanem
  4859. Bug: https://github.com/curl/curl/commit/2dcc940959772a652f6813fb6bd3092095a4877b#commitcomment-46420088
  4860. Jay Satiro (27 Jan 2021)
  4861. - asyn-thread: fix build for when getaddrinfo missing
  4862. This is a follow-up to 8315343 which several days ago moved the resolver
  4863. pointer into the async struct but did not update the code that uses it
  4864. when getaddrinfo is not present.
  4865. Closes https://github.com/curl/curl/pull/6536
  4866. Daniel Stenberg (27 Jan 2021)
  4867. - urldata: move 'ints' to the end of 'connectdata'
  4868. To optimize storage slightly.
  4869. Closes #6534
  4870. - urldata: store ip version in a single byte
  4871. Closes #6534
  4872. - urldata: remove duplicate 'upkeep_interval_ms' from connectdata
  4873. ... and rely only on the value already set in Curl_easy.
  4874. Closes #6534
  4875. - urldata: remove 'local_ip' from the connectdata struct
  4876. As the info is already stored in the transfer handle anyway, there's no
  4877. need to carry around a duplicate buffer for the life-time of the handle.
  4878. Closes #6534
  4879. - urldata: remove duplicate port number storage
  4880. ... and use 'int' for ports. We don't use 'unsigned short' since -1 is
  4881. still often used internally to signify "unknown value" and 0 - 65535 are
  4882. all valid port numbers.
  4883. Closes #6534
  4884. - urldata: remove the duplicate 'ip_addr_str' field
  4885. ... as the numerical IP address is already stored and kept in 'primary_ip'.
  4886. Closes #6534
  4887. - select: convert Curl_select() to private static function
  4888. The old function should not be used anywhere anymore (the only remaining
  4889. gskit use has to be fixed to instead use Curl_poll or none at all).
  4890. The static function version is now called our_select() and is only built
  4891. if necessary.
  4892. Closes #6531
  4893. - Curl_chunker: shrink the struct
  4894. ... by removing a field, converting the hex index into a byte and
  4895. rearranging the order. Cuts it down from 48 bytes to 32 on x86_64.
  4896. Closes #6527
  4897. - curl: include the file name in --xattr/--remote-time error msgs
  4898. - curl: s/config->global/global/ in single_transfer()
  4899. - curl: move fprintf outputs to warnf
  4900. For setting and getting time of the download. To make the outputs
  4901. respect --silent etc.
  4902. Reported-by: Viktor Szakats
  4903. Fixes #6533
  4904. Closes #6535
  4905. - [Tatsuhiro Tsujikawa brought this change]
  4906. ngtcp2: Fix http3 upload stall
  4907. Closes #6521
  4908. - [Tatsuhiro Tsujikawa brought this change]
  4909. ngtcp2: Fix stack buffer overflow
  4910. Closes #6521
  4911. - warnless.h: remove the prototype for curlx_ultosi
  4912. Follow-up to 217552503ff3
  4913. - warnless: remove curlx_ultosi
  4914. ... not used anywhere
  4915. Closes #6530
  4916. - [Patrick Monnerat brought this change]
  4917. lib: remove conn->data uses
  4918. Closes #6515
  4919. - pingpong: remove the 'conn' struct member
  4920. ... as it's superfluous now when Curl_easy is passed in and we can
  4921. derive the connection from that instead and avoid the duplicate copy.
  4922. Closes #6525
  4923. - hostip/proxy: remove conn->data use
  4924. Closes #6513
  4925. - url: reduce conn->data references
  4926. ... there are a few left but let's keep them to last
  4927. Closes #6512
  4928. - scripts/singleuse: add curl_easy_option*
  4929. Jay Satiro (25 Jan 2021)
  4930. - test410: fix for windows
  4931. - Pass the very long request header via file instead of command line.
  4932. Prior to this change the 49k very long request header string was passed
  4933. via command line and on Windows that is too long so it was truncated and
  4934. the test would fail (specifically msys CI).
  4935. Closes https://github.com/curl/curl/pull/6516
  4936. Daniel Stenberg (25 Jan 2021)
  4937. - libssh2: move data from connection object to transfer object
  4938. Readdir data, filenames and attributes are strictly related to the
  4939. transfer and not the connection. This also reduces the total size of the
  4940. fixed connectdata struct.
  4941. Closes #6519
  4942. - RELEASE-NOTES: synced
  4943. - [Patrick Monnerat brought this change]
  4944. lib: remove conn->data uses
  4945. Closes #6499
  4946. - hyper: remove the conn->data references
  4947. Closes #6508
  4948. - travis: build ngtcp2 --with-gnutls
  4949. ... since they disable it by default since a few days back.
  4950. Closes #6506
  4951. Fixes #6493
  4952. - hostip: remove conn->data from resolver functions
  4953. This also moves the 'async' struct from the connectdata struct into the
  4954. Curl_easy struct, which seems like a better home for it.
  4955. Closes #6497
  4956. Jay Satiro (22 Jan 2021)
  4957. - strerror: skip errnum >= 0 assertion on windows
  4958. On Windows an error number may be greater than INT_MAX and negative once
  4959. cast to int.
  4960. The assertion is checked only in debug builds.
  4961. Closes https://github.com/curl/curl/pull/6504
  4962. Daniel Stenberg (21 Jan 2021)
  4963. - doh: make Curl_doh_is_resolved survive a NULL pointer
  4964. ... if Curl_doh() returned a NULL, this function gets called anyway as
  4965. in a asynch procedure. Then the doh struct pointer is NULL and signifies
  4966. an OOM situation.
  4967. Follow-up to 6246a1d8c6776
  4968. - wolfssh: remove conn->data references
  4969. ... and repair recent build breakage
  4970. Closes #6507
  4971. - http: empty reply connection are not left intact
  4972. ... so mark the connection as closed in this condition to prevent that
  4973. verbose message to wrongly appear.
  4974. Reported-by: Matt Holt
  4975. Bug: https://twitter.com/mholt6/status/1352130240265375744
  4976. Closes #6503
  4977. - chunk/encoding: remove conn->data references
  4978. ... by anchoring more functions on Curl_easy instead of connectdata
  4979. Closes #6498
  4980. Jay Satiro (20 Jan 2021)
  4981. - [Erik Olsson brought this change]
  4982. lib: save a bit of space with some structure packing
  4983. - Reorder some internal struct members so that less padding is used.
  4984. This is an attempt at saving a bit of space by packing some structs
  4985. (using pahole to find the holes) where it might make sense to do
  4986. so without losing readability.
  4987. I.e., I tried to avoid separating fields that seem grouped
  4988. together (like the cwd... fields in struct ftp_conn for instance).
  4989. Also abstained from touching fields behind conditional macros as
  4990. that quickly can get complicated.
  4991. Closes https://github.com/curl/curl/pull/6483
  4992. Daniel Stenberg (20 Jan 2021)
  4993. - INSTALL.md: fix typo
  4994. Found-by: Marcel Raad
  4995. - [Fabian Keil brought this change]
  4996. http: get CURLOPT_REQUEST_TARGET working with a HTTP proxy
  4997. Added test 1613 to verify.
  4998. Closes #6490
  4999. - Merge branch 'bagder/curl_range-data-conn'
  5000. - ftp: remove conn->data leftover
  5001. - curl_range: remove conn->data
  5002. Closes #6496
  5003. - INSTALL: now at 85 operating systems
  5004. - quiche: fix unused parameter ‘conn’
  5005. Follow-up to 2bdec0b3
  5006. - transfer: fix ‘conn’ undeclared mistake for iconv build
  5007. Follow-up to 219d9f8620d
  5008. - doh: allocate state struct on demand
  5009. ... instead of having it static within the Curl_easy struct. This takes
  5010. away 1176 bytes (18%) from the Curl_easy struct that aren't used very
  5011. often and instead makes the code allocate it when needed.
  5012. Closes #6492
  5013. - socks: use the download buffer instead
  5014. The SOCKS code now uses the generic download buffer for temporary
  5015. storage during the connection procedure, instead of having its own
  5016. private 600 byte buffer that adds to the connectdata struct size. This
  5017. works fine because this point the buffer is allocated but is not use for
  5018. download yet since the connection hasn't completed.
  5019. This reduces the connection struct size by 22% on a 64bit arch!
  5020. The SOCKS buffer needs to be at least 600 bytes, and the download buffer
  5021. is guaranteed to never be smaller than 1000 bytes.
  5022. Closes #6491
  5023. - urldata: make magic be the first struct field
  5024. By making the `magic` identifier the same size and at the same place
  5025. within the structs (easy, multi, share), libcurl will be able to more
  5026. reliably detect and safely error out if an application passes in the
  5027. wrong handle to APIs. Easier to detect and less likely to cause crashes
  5028. if done.
  5029. Such mixups can't be detected at compile-time due to them being
  5030. typedefed void pointers - unless `CURL_STRICTER` is defined.
  5031. Closes #6484
  5032. - http_chunks: correct and clarify a comment on hexnumber length
  5033. ... and also rename the define for max length.
  5034. Closes #6489
  5035. - curl_path: remove conn->data use
  5036. Closes #6487
  5037. - transfer: remove conn->data use
  5038. Closes #6486
  5039. - quic: remove conn->data use
  5040. Closes #6485
  5041. - [Fabian Keil brought this change]
  5042. Add test1181: Proxy request with --proxy-header "Connection: Keep-Alive"
  5043. - [Fabian Keil brought this change]
  5044. Add test1180: Proxy request with -H "Proxy-Connection: Keep-Alive"
  5045. At the moment the test fails as curl sends two Proxy-Connection
  5046. headers.
  5047. - c-hyper: avoid duplicated Proxy-Connection headers
  5048. - http: make providing Proxy-Connection header not cause duplicated headers
  5049. Fixes test 1180
  5050. Bug: https://curl.se/mail/lib-2021-01/0095.html
  5051. Reported-by: Fabian Keil
  5052. Closes #6472
  5053. - runtests: preprocess DISABLED to allow conditionals
  5054. ... with this function provided, we can disable tests for specific
  5055. environments and setups directly within this file.
  5056. Closes #6477
  5057. - runtests: turn preprocessing into a separate function
  5058. ... and remove all other variable substitutions as they're now done once
  5059. and for all in the preprocessor.
  5060. - lib/Makefile.inc: convert to listing each file on its own line
  5061. ... to make it diff friendlier and easier to read.
  5062. Closes #6448
  5063. - ftplistparser: remove use of conn->data
  5064. Closes #6482
  5065. - lib: more conn->data cleanups
  5066. Closes #6479
  5067. - [Patrick Monnerat brought this change]
  5068. vtls: reduce conn->data use
  5069. Closes #6474
  5070. - hyper: deliver data to application with Curl_client_write
  5071. ... just as the native code path does. Avoids sending too large data
  5072. chunks in the callback and more.
  5073. Reported-by: Gisle Vanem
  5074. Fixes #6462
  5075. Closes #6473
  5076. - gopher: remove accidental conn->data leftover